簡體   English   中英

PHP中的MySQL查詢

[英]MySQL queries in PHP

兩個快速的(我希望!)問題:

計算行

在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)mysql_query獲取所有結果,然后對結果進行計數。 因此,性能與結果數量有關。 如果執行count(*),則它是一個數據庫選擇,僅產生一個行/列。 在這種情況下,數據庫可以為您做所有事情,通常認為這更好。

2) $count = mysql_fetch_array($count)[0]; 不可能。 請執行下列操作:

$count = mysql_fetch_array($count);
echo $count[0];
  1. 這取決於情況,但是SELECT COUNT(*)通常更快。 原因很簡單,就是使用mysql_num_rows() ,數據庫服務器必須實際構建結果集。 另一方面,使用COUNT(*) ,DB可能僅從索引就可以確定行數,這要快得多。 因此,如果只想計數,那么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]; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM