我有这样的代码:
$sql = "SELECT id FROM videos";
$stmp = $db->prepare($sql);
$stmp->execute();
while ($row = $stmp->fetchAll(PDO::FETCH_ASSOC)) {
$vkey = md5($row['id'] . "video");
$sql = "UPDATE videos SET vkey = :vkey WHERE id = :id";
$stmp = $db->prepare($sql);
$stmp->execute(array(
":vkey" => $vkey,
":id" => $row['id']
));
}
字符串
为什么execute只针对第一个select中的第一个id,而不是循环中的所有id?
2条答案
按热度按时间xzlaal3s1#
你可以通过这样做来完全避免所有这些代码:
字符串
(Or你可以在你的后台做这个查询,比如PHPMyAdmin
UPDATE videos SET vkey = MD5(CONCAT(vkey, 'video'))
)但是,如果您出于某种原因想要遍历数据库,您可以这样做:
型
此外,检查循环内的返回值以确保没有错误通常是一个好主意,您可以通过使用类似
$stmp->rowCount()
的东西来检查是否有任何行受到影响。daolsyd02#
你需要一个
字符串
否则,语句在第一次运行时就会卡住。你可能想用try...catch来检查,回显错误消息。