mysql_num_rows是否有效和/或标准实践?

And*_*rew 3 php mysql sqlite

不久之前,我正在尝试使用SQLite,试图将我的一些网站移植到使用它而不是MySQL.我很想知道缺少一个计算结果的函数,比如PHP mysql_num_rows().稍微搜索一下后,我发现了这个邮件列表,据我所知,SQLite没有这个功能,因为它效率低下.它声明编写需要知道返回多少行的代码是不好的形式.

我通常mysql_num_rows用来检查空的返回结果.例如:

$query = "SELECT * FROM table WHERE thing = 'whatever'";
$results = mysql_query($query);

if (mysql_num_rows($results)) {
    while ($row = mysql_fetch_array($results)) {
        echo "<p>$row[whatever]</p>";
    }
} else {
    echo "<p>No results found</p>";
}
Run Code Online (Sandbox Code Playgroud)

mysql_num_rows()对SQLite社区概念的强烈厌恶使我想知道它是否对PHP中的常规MySQL非常有效.

有没有更好的,更可接受的方法来检查PHP中的MySQL结果集的大小mysql_num_rows()

编辑:我不只是mysql_num_rows用来计算 - 我会用它来COUNT查询.在输出所有内容之前,我用它来检查是否有任何结果.这对于显示搜索结果等内容非常有用 - 并不总能保证会有结果.在SQLite世界中,我必须发送一个COUNT查询,检查是否有什么,然后发送SELECT查询以获取所有内容.

Bri*_*say 10

如果你有结果,你已经有了一些东西告诉你mysql_fetch_array().如果没有更多的行要获取(从php.net),它返回false .

$query = "SELECT * FROM table WHERE thing = 'whatever'";
$results = mysql_query($query);
if($results) {
    $row = mysql_fetch_array($results);
    if($row) {
        do {
            echo "<p>{$row[whatever]}</p>";
        } while($row = mysql_fetch_array($results));
    } else {
        echo "<p>No results found</p>";
    }

} else {
    echo "<p>There was an error executing this query.</p>";
}
Run Code Online (Sandbox Code Playgroud)