mysqli_result :: fetch_all返回Null

时间:2015-07-23 10:20:57

标签: php mysqli null

我有一个相当奇怪的问题,fetch_all()给我null,但结果确实存在,我在其他地方(使用不同的查询)使用完全相同的代码,它也可以正常工作。我甚至直接使用SQL测试了查询,它也可以正常工作。所以我希望有人可以帮助我理解为什么这个函数似乎为这个特定的查询返回null。整个代码如下,注释掉的while loop也返回结果;它实际上只是fetch_all()而不是。

require_once 'config.php'; //connect info
 $mysqli="";
$mysqli = new mysqli(DB_HOST, DB_USER,DB_PASS, DB_NAME);

if($mysqli->connect_errno)
{
    echo $mysqli->connect_error;
    return false;
}

$data = "";
$id=6;
$stmt = $mysqli->prepare("SELECT * FROM comments WHERE client_id=?");
if(false===$stmt)  die("prepare() failed: " . htmlspecialchars($mysqli->error));
if(false===$stmt->bind_param("i", $id)) die("bind_param() failed: " . htmlspecialchars($mysqli->error));
if(false===$stmt->execute()) die("execute() failed: " . htmlspecialchars($mysqli->error));
$result = $stmt->get_result();

if($result->num_rows>0)
{
    $data = json_encode($result->fetch_all(MYSQLI_ASSOC));
    //while($row = $result->fetch_assoc())
    //{
    //  $data .= $row['comment'] . " " . $row['date'];
    //}
}
else
{
    echo 'no results';
}

var_dump($result->fetch_all(MYSQLI_ASSOC)); //returns array(0) { }
var_dump($data); //returns bool(false)

我能想到的唯一可能性是它与数据库表结构有关,但我不知道为什么。

comments表结构如下:

`comments` (
`id` int(10) NOT NULL,
  `client_id` int(10) NOT NULL,
  `user_id` int(10) NOT NULL,
  `comment` text NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP)

当然,id是主要的,唯一的和自动递增的。

非常感谢任何帮助/建议。

谢谢, 添

1 个答案:

答案 0 :(得分:0)

num_rowsmysqli_query()

返回结果集标识符

所以而不是

if($result->num_rows>0)

您使用

if($stmt->num_rows>0)