大家一般如何判断 mysql_query('select.....') 返回结果是0的情况

dubiousway 2008-12-09 07:30:44
如题。

比如 $result= mysql_query('select.....')

能直接通过$result 判断查询结果为0吗。

大家一般用什么语句判断,比较快捷?
...全文
312 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zijian_Zhang 2008-12-09
  • 打赏
  • 举报
回复
用Select count(*) from table_name;,这样快很多的,如1楼所说的,如果执行查询数据的操作,则数据库管理程序处理需要多余的时间返回更多的数据,这样也无疑为PHP处理数据也增添一些负担,但用count,SQL语句直接返回个数,不用查询大量数据,所以。。。。。。
iasky 2008-12-09
  • 打赏
  • 举报
回复
看手册 http://cn.php.net/mysql_query
an9ryfr09 2008-12-09
  • 打赏
  • 举报
回复
其实无非就是两种方式:

1 $result = mysql_query(select count(*) ...
$row = mysql_fetch_rows($result);
echo $row[0];

2 $result = mysql_query(select * ...
$row = mysql_num_rows($result);
echo $row;

这两种方式哪种方式更好呢?其实看用在何种情况。

(以下所指的服务器端和客户端是指mysql的客户端和服务器端,也就是mysql和mysqld,php这边是mysql,mysql数据库是mysqld)

第1种方式的优势是,从服务器端返回客户端的数据很少。只返回一个字段,而且是一个int值。如果你只希望取记录总数,不需要各字段数据的话,这种方式无疑是最可取的。但如果你既想将记录集各字段数据取出来,又想得到记录的数量。当然就是第2种方式好了。因为你只需要对数据库进行一次query,而mysql_num_rows是在客户端操作的。这样的减少了客户端和服务器端数据传输的数量。尤其是mysql与apache不在同一服务器的情况下,表现的更明显。而如果用第1种方式的话,需要对数据库进行两次query,既select count(*)一次,select *一次。并且客户端和服务器端会传输一些冗余数据。

另外再提一点,mysql手册中说过,select count(*)在没有where条件的情况下直接查询表的内建索引,速度是相当快的。但如果有where条件的话,他的处理方式也是在内部先选出记录集,然后再去统计记录集的行数。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧