无法在while循环php mysqli中执行update语句

无法在while循环php mysqli中执行update语句,php,mysql,mysqli,Php,Mysql,Mysqli,我有以下疑问 $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 down

我有以下疑问

$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();
    }

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

您需要在update语句中使用bind_参数,而不是bind_结果

$temp_status_update->bind_param('dd', $download_status, $id);
“dd”只是告诉系统每个输入都是一个数字

@eggyal只是建议您可以用一条update语句替换所有代码。你关于限额的评论没有多大意义

建议:如果你对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']));
另外,您可以将其配置为引发异常,这样就不需要进行所有这些错误检查


为什么不简单地
更新temp\u all\u产品集download\u status=1,其中download\u status=0
?如果我在sql查询中使用limit,就会出现问题。对吧?如果你做了什么会怎么样?你做不到。你能解释一下吗有趣的是,这正是我要问你的!