通过存储过程在mysql中保存数据



我有一个表,必须通过每月更新,由于我上传文本文件在服务器上,并将其保存在临时表,下面的代码显示它:

$result_emp = "LOAD DATA LOCAL INFILE'".$myFile_emp."' INTO TABLE infemptemp COLUMNS TERMINATED BY ','";

然后在更新成功并在"infemptem"表中插入新数据后,我应该将具有旧数据的主表"infempp"的数据与具有新数据的"infemptemp"的数据进行比较,为此,我编写以下代码:

$viwe_emp =mysqli_query($conn,"select * from infempsame where 1");
              $NumRows_emp=mysqli_num_rows($viwe_emp);
              //echo $NumRows_vam;
              $i=0;
              while(($row=$viwe_emp->fetch_assoc())!=NULL)
                {
                $prsid1=$row['PrsID'];
                $AccID1=$row['AccID'];
                $numid1=$row['NumID'];
                $sql2="select * from infempsame  where prsID='".$prsid1."';";
                if (mysqli_query($conn,$sql2))
                    {
                    $sql2_update="UPDATE `infemp` SET AccID='".$AccID1."',NumID='".$numid1."' WHERE prsID='".$prsid1."';";
                     if(mysqli_query($conn,$sql2_update))
                     {
                     $i+=1;
                     }
                    }// end   if (mysqli_query($conn,$sql2))
          }// end while insert new fields of infvam

通过注意代码并在数据库上的"infempsame"表中有3500条记录,当我想更新"infempp"表时,浏览器发生超时。我想如果按照程序编写上面的代码,我的问题就解决了。这是真的吗?如何编写程序并调用或使用它?致以最亲切的问候。

存储过程是多余的。有一个更好的方法隐藏起来,但它只在手册中非常简短地提到

还可以对多个表执行UPDATE操作。但是,不能对多表使用ORDER BY或LIMIT更新。表中涉及的表加入。第13.2.9.2节"JOIN语法"描述了它的语法。在这里是一个例子:

UPDATE items,month SET items.price=month.price WHERE
items.id=month.id;

因此,您可以编写一个简单的查询来摆脱PHP脚本,就像这样。

UPDATE infemp, infemptemp 
    SET infemp.AccID=infemptemp.AccID,
    infemp.NumID=infemptemp.numID 
WHERE infemp.prsID=infemptemp.prsID;

如果您在prsID列上有一个索引,这应该很快完成。

相关内容

  • 没有找到相关文章

最新更新