微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>";
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐