为什么num_rows会返回null?它应该总是返回一个数字,表示结果集中的确切行数。
以下代码为num_rows返回null:
<?php
include_once 'includes/psl-config.php'; // host, user, password, database
$db = new PDO('mysql:host='.HOST.';dbname='.DATABASE.';charset=utf8', USER, PASSWORD,
array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
if ($res = $db->query("select 'Hello world!'")){
if (is_null($res)){
echo "Result is null<br>";
}
if (is_null($res->num_rows)){
echo "Num rows is null<br>";
} else {
echo "Rows returned: ".$res->num_rows."<br>";
}
while ($row = $res->fetch_row){
echo "Text returned = $row[0]<br>";
}
echo "Done";
} else {
echo "SQL error";
}
结果页面显示“Num_rows为空”。
这很简单,我必须遗漏一些东西!
答案 0 :(得分:1)
您正在使用PDO
。所以它应该是
$res->rowCount()
而不是
$res->num_rows
答案 1 :(得分:0)
由于您使用的是PDO而不是MySQLi,num_rows
不适用。话虽如此,一般来说,我发现rowCount()
在MySQL方面是可靠的,但是,正如手册中所述,您不应该依赖rowCount()
关于SELECT
语句的内容:
如果关联的PDOStatement执行的最后一条SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,并不保证所有数据库都有这种行为,不应依赖于便携式应用程序。
建议使用COUNT()
sql语句,以获得跨数据库平台的最高可靠性:
$db->query("SELECT COUNT(*) FROM table_name");