stmt->affected_rows with prepared statements returns 0 但查询有效

stmt->affected_rows with prepared statements returns 0 but query works

我有以下代码:

try {
  $dbc = new PDO('mysql:dbname=database;host=127.0.0.1;charset=utf8', 'root', 'password');

  $dbc->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
  $dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $stmt = $dbc->prepare("DELETE FROM GRUP WHERE `id_hash_group` = '9d7b04e242a2ce8b5eecce2159200853'");
  $stmt->execute();
  printf("deleted rows: %d\n", $stmt->affected_rows);
}
catch(PDOException $e){
  echo json_encode(array('codi'=>311, "msg"=>$e->errorInfo[2]));
  die();
}

查询工作正常,但事实证明代码 $stmt->affected_rows 总是 returns 0。我尝试将 $stmt->store_result() 放在它前面,但我得到的只是一个 500 服务器错误。我也尝试过使用另一个用户(我在某处读到 root 用户可能会导致麻烦)和代码的许多变体,例如删除 try/catch 块。

还有其他帖子问类似的问题,但 none 对我有帮助。有谁知道代码是否有问题或者是 Mysqli 错误?

谢谢

要获取删除的行数,请使用 rowCount 并阅读手册 rowCount

$count = $stmt->rowCount();