簡體   English   中英

PHP + MYSQL:更新查詢問題

[英]PHP+MYSQL: Problem with Update query

我在運行此查詢時遇到問題。 我繼續得到錯誤:

您的SQL語法有誤; 檢查與您的MySQL服務器版本對應的手冊以獲取正確的語法,以在第1行的'read ='readd'WHERE user_id ='1'LIMIT 1'附近使用

編碼

 $conn = mysql_connect('localhost', 'admin', 'root') or die(mysql_error());
    mysql_select_db('main') or die(mysql_error());

 $read = "message read";

 $set_statuss = "UPDATE inbox ".
            "SET read = '".$read."' ".
            "WHERE user_id = '".$_SESSION['user_id']."' ".
            "LIMIT 1";

編輯:這是表:

 CREATE TABLE `inbox` (
 `inbox_id` int(5) NOT NULL auto_increment,
 `posted_to` int(5) NOT NULL,
 `posted_by` int(5) NOT NULL,
 `subject` text NOT NULL,
 `message` text NOT NULL,
 `date_posted` datetime NOT NULL,
 `read` text NOT NULL,
 PRIMARY KEY  (`inbox_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

編輯:更新了查詢,但現在PHP只是顯示為白色。

 $read = "read";

 $set_statuss = "UPDATE inbox ".
            "SET read = '".$read."' ".
            "WHERE posted_to = '{$_SESSION['user_id']}' AND inbox_id = '".$_GET['msg_id'];."' ";

 mysql_query($set_statuss) or die(mysql_error() . $set_statuss);

地址欄中的網址:

 http://localhost:8888/wmin/msg.php?user_id=1&msg_id=2

有人看到我要去哪里了嗎? 謝謝!

我認為它可能將read作為關鍵字,嘗試對其進行踩踏,即在其周圍使用反引號(以SO的降價語言表示很難;-)。

一方面,如果您使用Heredoc ,它將使您的代碼更易於閱讀。 另外,為什么將其限制為1行? 您如何知道要更新的行?

您應該從mysql_query()調用中報告錯誤,以查看到底出了什么問題。 我假設$_SESSION['user_id']是一個數字? 如果未定義,查詢將失敗,這就是為什么您應該記錄和/或報告錯誤 SQL的原因。

$conn = mysql_connect('localhost', 'admin', 'root') or die(mysql_error());
mysql_select_db('main') or die(mysql_error());

$read = "message read";
$sql = <<<END
UPDATE inbox
SET read = `$read`
WHERE user_id = $_SESSION[user_id]
END;
mysql_query($sql) or die(mysql_error() . ': ' . $sql);

為了安全起見,建議您使用sprintf函數來傳遞參數。

$q = sprintf("UPDATE inbox SET `read` = '%s' WHERE `user_id` = %d LIMIT 1",
                    $read, $_SESSION['user_id']); 

嗨,大家弄清楚出了什么問題:

 $read = "message read";

 $set_statuss = "UPDATE inbox ".
            "SET readd = '".$read."' ".
            // changed $_SESSION to $_GET and the ';' after msg_id GET 
            "WHERE posted_to = '{$_SESSION['user_id']}' AND inbox_id = '".$_GET['msg_id'];."' ";

 mysql_query($set_statuss) or die(mysql_error() . $set_statuss);

感謝大家!

暫無
暫無

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

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