PHP中的MySQL查询

PHP中的MySQL查询,php,mysql,Php,Mysql,两个快速(我希望如此!)的问题: 计算行数 在SQL查询中使用COUNT(id)更有效,还是只选择所有行并对返回的资源使用PHP的mysql\u num\u rows()函数更有效?这是否取决于结果查询的大小?有没有一个相当简单的方法来确定这个问题的答案 结果数组 目前,我在查询中使用了COUNT(id),然后显然使用了mysql\u query()和mysql\u fetch\u array(),如下所示: $sql = "SELECT COUNT(id) FROM TABLE1;"; $re

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

计算行数

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

结果数组

目前,我在查询中使用了
COUNT(id)
,然后显然使用了
mysql\u query()
mysql\u fetch\u 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 
对发生的事情有一个简单的解释吗

提前感谢,
Chris

1)mysql\u查询获取所有结果,然后对结果进行计数。因此,性能与结果的数量有关。如果您使用count(*),则这是一个DB select,只会产生一行/一列。在这种情况下,数据库为您做了一切,这通常被认为是更好的

2)
$count=mysql\u fetch\u数组($count)[0]不可能。请执行以下操作:

$count = mysql_fetch_array($count);
echo $count[0];
1) mysql_查询获取所有结果,然后对结果进行计数。因此,性能与结果的数量有关。如果您使用count(*),则这是一个DB select,只会产生一行/一列。在这种情况下,数据库为您做了一切,这通常被认为是更好的

2)
$count=mysql\u fetch\u数组($count)[0]不可能。请执行以下操作:

$count = mysql_fetch_array($count);
echo $count[0];
  • 这取决于情况,但
    选择计数(*)
    通常更快。 原因很简单,使用
    mysql\u num\u rows()
    ,数据库 服务器必须实际构建结果集。带有
    计数(*)
    ,在 另一方面,DB可能仅仅能够确定行数 从索引,这是快得多。所以如果你只想数一数, 然后,
    mysql\u num\u rows()
    会为同一行做更多的工作 结果

    另一个缺点是mysql\u num\u行不能与 无缓冲查询。所以,如果你需要非常大的结果 设置,使用mysql\u num\u行可能不是一个选项。但是,
    COUNT(*)
    始终可用

  • $count=mysql\u fetch\u数组($resource)[0]

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

    $no_of_rows = mysql_fetch_array($count);
    echo $no_of_rows[0];
    
  • 这取决于情况,但
    选择计数(*)
    通常更快。 原因很简单,使用
    mysql\u num\u rows()
    ,数据库 服务器必须实际构建结果集。带有
    计数(*)
    ,在 另一方面,DB可能仅仅能够确定行数 从索引,这是快得多。所以如果你只想数一数, 然后,
    mysql\u num\u rows()
    会为同一行做更多的工作 结果

    另一个缺点是mysql\u num\u行不能与 无缓冲查询。所以,如果你需要非常大的结果 设置,使用mysql\u num\u行可能不是一个选项。但是,
    COUNT(*)
    始终可用

  • $count=mysql\u fetch\u数组($resource)[0]

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

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

  • PHP根本不允许
    function()[$array\u index]
    。这是对其语法分析的限制。第二个问题:不幸的是,您不能像使用JavaScript那样引用数组。PHP 5.4将提供该功能(数组解除限制)
    function()[]
    ,请不要使用
    mysql.*
    函数,它们是邪恶的。使用PDO或mysqli@JohnD当前位置它们不是邪恶的,它们只是一种工具。如果您不知道如何使用,任何工具都可能出错。PHP根本不允许
    function()[$array\u index]
    。这是对其语法分析的限制。第二个问题:不幸的是,您不能像使用JavaScript那样引用数组。PHP 5.4将提供该功能(数组解除限制)
    function()[]
    ,请不要使用
    mysql.*
    函数,它们是邪恶的。使用PDO或mysqli@JohnD当前位置它们不是邪恶的,它们只是一种工具。如果你不知道如何使用,任何工具都会出问题。