php - PHP 中的 MySQL 查询

标签 php mysql

两个快速(我希望!)问题:

计算行数

在 SQL 查询中使用 COUNT(id) 更有效,还是只选择所有行并在返回的资源上使用 PHP 的 mysql_num_rows() 函数?这是否取决于结果查询的大小?有没有一种相当简单的方法来确定这个问题的答案?

结果数组

目前,我在查询中使用 COUNT(id),然后显然使用 mysql_query()mysql_fetch_array() ,如下:

$sql = "SELECT COUNT(id) FROM TABLE1;";
$resource = mysql_query($sql) or die(mysql_error())
$result = mysql_fetch_array($resource);
$count = $result[0];

这会返回正确的行数。然而,令我惊讶的是

$count = mysql_fetch_array($resource)[0];

不起作用;我收到错误:

Parse error: syntax error, unexpected '[' in C:\ServerDocs\file1.php on line 44 

是否有关于发生了什么的简单解释?

提前致谢,
克里斯

最佳答案

  1. 这取决于具体情况,但 SELECT COUNT(*) 通常更快。 原因很简单,使用 mysql_num_rows(),数据库 服务器必须实际构建结果集。使用 COUNT(*),在 另一方面,数据库可能能够确定行数 从索引,这要快得多。所以如果你想要的只是计数, 然后 mysql_num_rows() 最终会为此做更多的工作 结果。

    另一个缺点是 mysql_num_rows 不适用于 无缓冲的查询。所以如果你需要处理非常大的结果 集,使用 mysql_num_rows 可能不是一个选项。但是,COUNT(*) 始终可用。

  2. $count = mysql_fetch_array($resource)[0];

    这种类型的语句在当前版本的 php 中是不可能的。 所以,更好地使用

    $no_of_rows = mysql_fetch_array($count);
    echo $no_of_rows[0];
    

关于php - PHP 中的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7461958/

相关文章:

php - 使用 WAMP 调用未定义的函数 sqlsrv_connect()

php - 防止 json_encode 关联数组排序

mysql - Symfony 1.4 更改 AdminGenerator-module/Find Query 中的嵌入表单

php - 以10个为一组读取Mysql数据库

php - 关于 mySQL 和 PHP 的初学者问题,以避免在每个页面上连接到数据库

mysql - Mysql查询中不同列的计算

php - Memcached PHP 模块 : How can you tell if the connection failed?

php - unix_timestamp 日期和时间差

php - mysql php查询CASE根据第一个表中的列选择第二个表中的列

php - 使用 mysql_query 和 mysql_fetch_array