php – mysql_num_rows是否有效和/或标准做法?

不久之前,我正在尝试使用sqlite,试图将我的一些网站移植到使用它而不是MySQL.我对缺少一个计算结果的函数感到困惑,比如PHPMysqL_num_rows().搜索了一下之后我发现了this mail list,它说(据我所知)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>";
}

sqlite社区中对MysqL_num_rows()概念的强烈厌恶让我想知道它是否对PHP中的常规MysqL非常有效.

除了MysqL_num_rows()之外,还有更好的,更可接受的方法来检查PHPMysqL结果集的大小吗?

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

解决方法:

如果你在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>";
}

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能