2009-06-20 105 views
2
$result = $db_con->query("SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 0,10"); 

$count_result = $db_con->query("SELECT FOUND_ROWS() as totalcount"); 
$row = $count_result->fetch_assoc(); 
$total = $row['totalcount']; 

$ total總是返回0,即使$ result包含其中的所有用戶行。FOUND_ROWS()總是返回0

ini_set("mysql.trace_mode", "0"); 

我在這裏找到了一個類似的Q,但它沒有解決我的問題。

當我在MySQL客戶端中使用2條select語句時,它總是輸出正確的計數。只是似乎無法弄清楚如何讓它在我的PHP頁面上工作。

PHP版本:5.2.5構建6 的MySQL版本:5.1.30

注:我這裏提供的代碼沒有被我的實際項目中使用,然而,它確實例證我與遇到的問題無法檢索總數。從我讀過的有關found_rows()的代碼中,該代碼應該可以工作,但不會。

+0

@Seth:您是否嘗試添加LIMIT子句? – gahooa 2009-06-20 16:23:12

+0

ini_set(「mysql.trace_mode」,「0」);解決我的問題。感謝您的問題:) – 2012-03-14 12:54:56

回答

1

在php.net,我發現有人也許同樣的問題。他談到了可能發生的競爭狀況:php.net。基本上,他通過臨時鎖定桌子來解決這個問題,代價是放慢速度。

-3

我不確定你正在使用哪個數據庫庫,但它看起來像你試圖從MySQL數據庫中的PHP中選擇語句中的行數。

你有沒有試過看過,如果它在PHP中內置的mysql數據庫函數的作品?

$count_result = mysql_query("SELECT COUNT(*) as totalcount FROM users"); 
$row = mysql_fetch_array($count_result); 

$total = $row['totalcount']; 
+0

-1:不回答關於LIMIT的原始問題,並且FOUND_ROWS() – gahooa 2009-06-20 02:22:12