PHP MySQLI Result num_rows返回null

PHP MySQLI Result num_rows返回null,php,mysqli,Php,Mysqli,为什么num_行会返回null?它应该始终返回一个数字,表示结果集中的确切行数 以下代码为num_行返回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

为什么num_行会返回null?它应该始终返回一个数字,表示结果集中的确切行数

以下代码为num_行返回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_行为空

这太简单了,我一定错过了什么

手册说num_行总是返回一个int。 我使用mysqli查询,它默认存储结果。我不需要使用存储结果。 结果不为空。 您正在使用PDO。应该如此

$res->rowCount()
而不是

$res->num_rows

因为您使用的是PDO而不是MySQLi,所以num_行不适用。也就是说,一般来说,我发现rowCount在MySQL方面是可靠的,但是,正如手册中所述,在SELECT语句方面,您不应该依赖rowCount:

如果关联的PDO语句执行的最后一条SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,并非所有数据库都能保证这种行为,便携式应用程序也不应依赖这种行为

建议使用COUNT sql语句,以实现跨数据库平台的最大可靠性:

$db->query("SELECT COUNT(*) FROM table_name");

对于PDO,我使用$res->rowCount来计算行数;您好,世界是表吗?是的,您应该使用$res->rowCount和$res->fetch。请参阅此页面:使用$foundRows=$pdo->querySELECT FOUND_ROWS->fetchColumn;是比使用$res->rowCount更好的选择;IMHO.您不应该在select语句上使用$res->rowCount。这是不可靠的…我昨天从字面上了解到了这一点。它对于select语句是不可靠的。你需要做一个计数*语句/查询。不知道可能是。。但是如果它不可靠,那么伯爵会做的。谢谢。这是正确的答案:-