在for循环中更新查询

时间:2019-03-22 20:03:23

标签: php mysql sql

为什么不起作用。

我想更新数据库中的表,这是我的代码。

for ($i=0; $i <83 ; $i++) { 

    $link="this is test".$i;
    $sql = "UPDATE tbl_gallery_images SET   thumbnail_url='$link' WHERE gallery_id=1";

    // Prepare statement
    $stmt = $conn->prepare($sql);
    // execute the query
    $stmt->execute();

    echo $link."<br>";
}

当我回显该链接时,它显示100%正确,但是在db中,即使在循环中,也只更新所有行中的82号。 预先感谢。

1 个答案:

答案 0 :(得分:0)

  

UPDATE tbl_gallery_images SET thumbnail_url = '$link' WHERE gallery_id = 1

实际上,此查询更新所有具有thumbnail_url的记录中的列gallery_id = 1。在一个循环中运行84次相同的查询会导致同一记录集在每次迭代中一次又一次地更新,并增加thumbnail_url。在最后一次迭代之后,所有gallery_id = 1都以thumbnail_url = 'this is test83结尾的记录。

一个明智的解决方案是在WHERE子句中添加另一个条件,以便每次迭代仅更新一个记录。假设您有一个称为id的整数列来消除gallery_id = 1处的记录的歧义,通常可以这样做:

`UPDATE tbl_gallery_images SET thumbnail_url = '$link' WHERE gallery_id = 1 AND id = $i`