带有预处理语句的stmt-> affected_rows返回0,但查询有效

时间:2015-04-23 10:34:43

标签: php mysqli

我有以下代码:

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总是返回0.我已经尝试在它之前放置$stmt->store_result()但是我得到的只是500服务器错误。我也试过使用另一个用户(我读过root用户可能会引起麻烦的地方)和代码的许多变化,比如删除try / catch块。

还有另外一个帖子要求提出simillar问题,但他们都没有帮助过我。有人知道代码中是否有任何错误或者是否是Mysqli错误?

由于

1 个答案:

答案 0 :(得分:0)

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

$count = $stmt->rowCount();