我有一个必须每月更新的表,因为我在服务器上传文本文件并将其保存在临时表中,以下代码显示:
$result_emp = "LOAD DATA LOCAL INFILE'".$myFile_emp."' INTO TABLE infemptemp COLUMNS TERMINATED BY ','";
然后成功更新并在" infemptem"中插入新数据表,我应该比较主表的数据" infemp"那些有旧数据的" 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"在我的数据库上的表,当我想要更新" infemp"表,浏览器发生超时。 我想如果通过程序写上面的代码,我的问题就解决了。 这是真的吗?我如何编写程序并致电或使用它? 最诚挚的问候。
答案 0 :(得分:1)
存储过程太过分了。有一种更好的隐藏方式,但在manual
中只是一个非常简短的提及您还可以执行覆盖多个表的UPDATE操作。 但是,您不能将ORDER BY或LIMIT与多表一起使用 UPDATE。 table_references子句列出了涉及的表 加入。其语法在第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列上有索引,则应该很快完成。