2010-06-21 83 views
0

我有一個消息傳遞系統,它工作正常,但我有它,所以當它讀取它mysql_querys並將讀取設置爲1.這樣,你可以告訴它,如果它的opend。它不會在這裏更新是查看其更新消息的腳本。感謝mysql不更新

<?php 
session_start(); 

require "../scripts/connect_to_mysql.php"; 

    if (isset($_SESSION['id'])){ 
    $touser = $_SESSION['id']; 
     } 
     elseif (!isset($_SESSION['id'])){ 
      header('location: http://www.stat-me.com'); 
     } 

$id = $_GET['id']; 
$memberfirstname = $_SESSION['firstname']; 


if(!isset($id)) { 
    header('location: inbox.php'); 
} 
elseif(isset($id)) { 

    mysql_query("UPDATE pms SET read='1' WHERE id='$id'");  


    $grab_pm = mysql_query("SELECT * FROM pms WHERE touser = '$touser' AND id = '$id'"); 

    while($r= mysql_fetch_object($grab_pm)) {  
     $subject = $r->subject;  
     $message = $r->message;  
     $fromuser = $r->fromuser;  
     $datesent = $r->datesent;  
     $read = $r->read; 
    } 


} 


?> 
+0

什麼數據類型是id和讀? – 2010-06-21 10:39:21

+0

讀取數據庫時enum defult設置爲「0」,並且消息第一次打開時,它假設更新爲「1」 id是數據庫中消息的id(同樣在鏈接中它會是stat-me.com/messaging/view.php?ID=X),它從 – DonJuma 2010-06-21 10:43:03

回答

0

這並不完全清楚,如果ID字段是一個INT但我猜是這樣,在這種情況下修復代碼如下(除去約$ ID的單引號):

mysql_query("UPDATE pms SET read='1' WHERE id=$id"); 
$grab_pm = mysql_query("SELECT * FROM pms WHERE touser = $touser AND id = $id"); 

也一定要逃避你的GET變量,例如

$id = mysql_real_escape_string($_GET['id']) ; 

編輯:也採取上述約$至用戶單引號

+0

得到它仍然沒有。我不明白爲什麼它不工作 – DonJuma 2010-06-21 10:58:10

+0

和id是一個INT 和閱讀是一個ENUM – DonJuma 2010-06-21 11:07:55

+0

啊,我敢打賭touser是一個INT也是,對不對?我將編輯答案以反映這一點。另外,你有沒有調試過它?在測試頁面或開發站點上,將查詢回覆給瀏覽器,並將它們直接複製並粘貼到數據庫中,例如,使用phpMyAdmin - 你有錯誤嗎? – 2010-06-21 11:10:09

0

更改查詢

mysql_query("UPDATE pms SET read='1' WHERE id=".$id); 
$grab_pm = mysql_query("SELECT * FROM pms WHERE touser = ".$touser." AND id = ".$id); 

INT數據類型來沒有雙引號,枚舉依賴於他們的內容(所以如果你在例子中插入'1'和'0',刪除引號'1',否則保留它們)。