在fetch_array(mysqli OOP)之后获取num_rows的正确命令顺序

时间:2013-12-22 08:31:23

标签: php oop mysqli

当我将结果作为数组获取时,我遇到问题{<1}}:

num_row

如果我将store_results和num_rows放在示例中,我会得到一个

  

在非对象错误上调用成员函数fetch_array()。

如果我将它放在fetch_array之后,它总是等于零。我以前成功使用过num_rows,但这是我第一次尝试将它与fetch_array一起使用。

3 个答案:

答案 0 :(得分:2)

查看文档

  

<强> mysqli_result::$num_rows
  int $mysqli_result->num_rows;

如果您出于某种原因需要使用num_rows而不是

$stmt->store_result();
$exist=$stmt->num_rows;
$result = $stmt->get_result();
$peopleres  = $result->fetch_array(MYSQLI_ASSOC); // this does work :)
if ($exist == 0) {
//do something it it's zero
}

你可以尝试

$result = $stmt->get_result();
$exist = $result->num_rows;
if ($exist == 0) {
    //do something it it's zero
}
$row = $result->fetch_array(MYSQLI_ASSOC);

现在,如果您只是检查结果集中是否有任何行,那么num_rows的使用并非绝对必要,因为您已经在客户端上获得了结果集。你可以尝试获取一行

$result = $stmt->get_result();
if (!$row = $result->fetch_array(MYSQLI_ASSOC)) {
    //do something if there's no row
} else {
    //do what you have to do with you data in the row
    echo 'peopleid: ' . $row['peopleid'];
}

答案 1 :(得分:-3)

num rows是有史以来最无用的功能 你也不需要它。只需获取您的数据并使用它而不是$ exists flag:

if(!$peopleres) ...

答案 2 :(得分:-3)

您也可以使用:

$exist = $stmt->affected_rows;

删除:

$stmt->store_result();
$exist=$stmt->num_rows;
$result = $stmt->get_result();

添加:     $ result = $ stmt-&gt; get_result();     $ exist = $ stmt-&gt; affected_rows;