2013-04-09 44 views
0

如果我想在我的數據庫中統計一個特定行(unread),應該如何處理這個MySQL查詢?到目前爲止,它統計整個表格。在MySQL中計算特定行

$result_notifications = mysql_query("select count(1) FROM bhost_notifications where taker_id='$user_info[u_id]'"); 
$row_notifications = mysql_fetch_array($result_notifications); 
$total_notifications = $row_notifications[0]; 
+2

如果你想要行的數量等於某些東西,然後添加一個where子句 – Cfreak 2013-04-09 15:15:48

+1

'mysql_ *'有很長一段時間從地球消失....悲傷的事實。 – itachi 2013-04-09 15:18:33

回答

1

您需要別名列。

SELECT COUNT(1) AS count ... 

然後你會打電話給$row_followers[count]。請注意,mysql_函數已被棄用。瞭解有關prepared statements傳遞變量時,並使用PDOMySQLi - this article將幫助您決定哪些。

+0

我會盡快更改爲PDO!感謝您的通知,並幫助解決我的問題。 – user2261044 2013-04-09 15:19:17

0

我懷疑你有一個非標準化的數據庫。雖然這在某些情況下更可取,但我懷疑它們屬於你。正如你所寫,你不能確定查詢將返回你想要的行。除非使用order by子句,否則SQL不保證行的順序。

看起來像這個問題表明一些語法問題更多的問題。

0

隨着時間的推移,我在PHP中編寫了一個很好的函數,它允許我輕鬆查找記錄,但仍然足夠動態以便在我執行的每種查詢類型中都有用。

用法:

if (get("select * from table", $query_array) > 0) 
{ 
// There is at least one row returned 
$result_array = mysql_fetch_array($query_array); 
. 
. 
. 
} else { 
// No rows in the set 
} 

功能:

function get($sql, &$array) 
{ 
$array = ""; 
$q = mysql_query($sql); 
if (mysql_error()) 
{ 
    $ret = -1; 
    print "<div><font style='font-family: arial; font-size: 12px;'><font style='color: red;'>Error:</font> " . mysql_error() . "<br>SQL: #sql</font></div>"; 
    exit(1); 
} else { 
    $ret = mysql_num_rows($q); 
    if ($ret > 0) 
    { 
    $array = $q; 
    } 
} 
return $ret; 
} 

這也使的情況下,有與查詢的東西wron格式化的錯誤消息。我一直都在使用它,因爲它將mysql_query和mysql_num_rows一起壓縮爲一個命令。