【发布时间】:2019-03-02 14:20:20
【问题描述】:
我有这个代码:
$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']
));
}
为什么只对第一个选择的第一个 id 执行,而不是对所有在循环中的 id 执行?
【问题讨论】:
-
您的代码中有两个
execute()调用,一个在循环中。我想我不明白你的问题? -
首先选择从表视频中获取所有 id,然后在循环中我想对每个 id 执行查询
-
最好全部取入数组,然后循环遍历stackoverflow.com/a/15386703/3254405
-
你覆盖了
$stmp。您还应该在循环之外进行准备。 -
为什么不使用 MySQL 的 MD5() 进行纯 SQL 调用:
UPDATE videos SET vkey = MD5(vkey);?