为什么不起作用。
我想更新数据库中的表,这是我的代码。
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号。 预先感谢。
答案 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`