gpt4 book ai didi

php - 无法在 while 循环 php mysqli 中执行更新语句

转载 作者:行者123 更新时间:2023-11-30 00:45:57 25 4
gpt4 key购买 nike

我有以下查询

$products = $this->mysqliengine->query("select * from temp_all_product where download_status = 0") or die($this->mysqliengine->error());
$temp_status_update = $this->mysqliengine->prepare("update temp_all_product set download_status = ? where id = ?") or die($this->mysqliengine->error);
$temp_status_update->bind_result($download_status, $id);

while($product = $products->fetch_assoc()) {
$id = $product['id'];
$download_status = 1;
$temp_status_update->execute();
}

在上面的语句中,我可以从临时表中选择值,但无法更新状态。这里有什么问题

最佳答案

您需要在更新语句中使用bind_param而不是bind_result。

$temp_status_update->bind_param('dd', $download_status, $id);

“dd”只是告诉系统每个输入都是一个数字。

http://www.php.net/manual/en/mysqli-stmt.bind-param.php

@eggyal 只是建议您可以用单个更新语句替换所有代码。您对 LIMIT 的评论没有多大意义。

建议:如果您对 mysqli 没有太多投入,那么请切换到 PDO。它允许使用命名参数,这可以使您的代码更健壮且更易于维护:

$sql = "UPDATE temp_all_product SET download_status = :status where id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(array('status' => 1, 'id' => $product['id']));

此外,您可以将其配置为引发异常,这样您就不需要所有这些错误检查。

http://www.php.net/manual/en/book.pdo.php http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/

关于php - 无法在 while 循环 php mysqli 中执行更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21357671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com