我有一个表,必须通过每月更新,由于我上传文本文件在服务器上,并将其保存在临时表,下面的代码显示它:
$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列上有一个索引,这应该很快完成。