2011-12-13 23 views
0

這是我目前必須從數據庫中獲取的值PHP,MYSQL每當一個特定的行擊中其添加+1 PHP變量

$unread_messages = ""; 

$query = mysql_query("SELECT * FROM pm WHERE msg_to='".$_SESSION['user_id']."' or 
msg_from='".$_SESSION['user_id']."' LIMIT 10") or die(mysql_error()); 
while($row = mysql_fetch_array($query)){ 
$msg_id = $row["msg_id"]; 
$msg_to = $row["msg_to"]; 
$msg_from = $row["msg_from"]; 
$msg_title = $row["msg_title"]; 
$msg_content = $row["msg_content"]; 
$msg_date = $row["msg_date"]; 
$msg_read = $row["msg_read"]; 
} 

現在我需要它,這樣每次「$ msg_read == 1 '它爲'$ unread_messages'增加了+1。有人能幫助我嗎?

回答

0
$unread_message = 0; 
while($row = mysql_fetch_array($query)) 
{ 
    //Your code 
    if ($msg_read === 1) 
     $unread_message++; 
} 
+3

'=== 1'將永遠在這方面失敗,因爲據我所知,值從數據庫讀取通常不會自動轉換爲int數據類型! – codeling

1

只需添加一個檢查在循環

$unread_messages = 0; 

while (...) { 
    // do stuff 
    if ($msg_read == 1) { 
     $unread_messages++; 
    } 
} 

我強烈建議你看看在mysqliPDO擴展數據庫的訪問。 mysql_已過時,不應使用。

+0

針對mysql或PDO的+1。唯一的評論實際上不是尋求輕鬆的聲譽和幫助新人。做得好。 –

+0

非常感謝。我一直被告知使用PDO,那有什麼區別? mysql_是否存在安全問題? –

+0

是的,'mysql_'有一些問題。它不支持預先準備的語句,並被視爲「已棄用」。實際上,內部PHP團隊一直在討論如何讓人們停止使用'mysql_'並使用更新,更安全,功能豐富的擴展。新代碼絕對不應該使用這個過時的擴展名編寫。 – cspray

1

你試過這個嗎?

$unread_messages = ""; 

$query = mysql_query("SELECT * FROM pm WHERE msg_to='".$_SESSION['user_id']."' or 
msg_from='".$_SESSION['user_id']."' LIMIT 10") or die(mysql_error()); 
while($row = mysql_fetch_array($query)){ 
$msg_id = $row["msg_id"]; 
$msg_to = $row["msg_to"]; 
$msg_from = $row["msg_from"]; 
$msg_title = $row["msg_title"]; 
$msg_content = $row["msg_content"]; 
$msg_date = $row["msg_date"]; 
$unread_messages = ($row["msg_read"]==1 && $unread_messages=='') ? $unread_messages=1 : $unread_messages=$unread_messages+1; 
} 

喔,對不起,使用PDO actualy真的好做法,可能是你可以試試這個

$unread_messages = ""; 
try { 
    $dbh = new PDO("mysql:host=$hostname;dbname=dbname", $username, $password); 
    $sql = "SELECT * FROM pm WHERE msg_to='".$_SESSION['user_id']."' or msg_from='".$_SESSION['user_id']."' LIMIT 10"; 
    foreach ($dbh->query($sql) as $row){ 
     $unread_messages = ($row["msg_read"]==1 && $unread_messages=='') ? $unread_messages=1 : $unread_messages=$unread_messages+1; 
    } 
    $dbh = null; 
} 
catch(PDOException $e){ 
    echo $e->getMessage(); 
} 
+0

謝謝你的回答,但我想我會去切換到PDO而不是mysql_ –

+0

我編輯了我的答案,希望這對你有所幫助:) –

+0

感謝這是完美的,我所有的編程技巧都是自學的,所以我必須花時間學習PDO。這會幫助我更好地學習語法,謝謝Wenkhairu。 –