PHP MySQLI Result num_rows返回null
为什么num_行会返回null?它应该始终返回一个数字,表示结果集中的确切行数 以下代码为num_行返回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
<?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语句是不可靠的。你需要做一个计数*语句/查询。不知道可能是。。但是如果它不可靠,那么伯爵会做的。谢谢。这是正确的答案:-