2013-07-07 65 views
-2

我想在PHP腳本中使用MySql更新語句來更新列中的數據。 MySql數據庫中的表稱爲用戶,相關列爲短信和用戶名。使用PHP的Mysql字符串中的轉義變量

mysql_query 
("UPDATE users set sms = $_SESSION[sms]+ 50 WHERE username = $_SESSION[username]") 
; 
echo mysql_error(); 

我運行該腳本後得到的錯誤是:

Unknown column 'maihannijat' in 'where clause' 

的原因是用戶名也是列名旁邊的變量。變量表示活動會話的用戶名。

我想在WHERE子句之後轉義用戶名變量,以在WHERE字之後傳遞精確的[用戶名]文本類型。

+1

從表,其中名稱添加回tickes或者'你的表或行的名稱,如SELECT''用戶名是'某事'; – samayo

+0

@phpNఠ_ఠ貝我做到了。同樣的錯誤出現。 –

回答

-1

爲了避免你的語句變得困惑(嘗試將表名解釋爲查詢的一部分),你的行或包含mysql保留名稱的表應該包含在反引號(`)中以避免衝突。

例如:您有一個名爲(你不應該擺在首位有)但是,如果你真的想用該名稱作爲你的表名做一個表名:

mysql_query("SELECT * FROM `table`") 

而且最好還是在mysql語句之外進行計算。這樣做: 在你的情況下,它應該更像:

$final = $_SESSION[sms]+50然後在查詢中使用$final

"UPDATE users set sms = '$final' WHERE username = `$_SESSION[username]` " 

最後一兩件事:你不應該使用mysql_功能。學習和使用mysqli_/PDO

編輯:

$final = $_SESSION[sms]+ 50; 

    mysql_query("UPDATE users set sms = '$final' 
    WHERE username = ".$_SESSION['username']." ")or die(mysql_error()); 
+0

( 「更新用戶設置短信= $ _SESSION [短訊] + 50,其中users.'username' = $ _SESSION [用戶名]」) 我這樣做,但沒有工作 –

+0

請不要'或死亡(mysql_error())在'你的查詢結束並告訴我們錯誤是什麼意思 – 2013-07-07 19:13:22

+0

'where子句'中的未知列'maihannijat' –

2

這將解決您的問題,但是......

mysql_query 
("UPDATE users set sms = ".$_SESSION['sms']." + 50 WHERE username = ".$_SESSION['username']) 
; 

...你有你的查詢3個大錯誤:您只能在"之內編寫簡單變量,如"SELECT $x FROM $y"。其次,您需要設置'"來尋址關聯數組鍵,如$_SESSION["myvar"]。第三,您正在使用mysql,這已經過去幾年了。改爲使用mysqli

更新:我不知道您的查詢做什麼,但是這可能是一種替代方案:

mysql_query 
("UPDATE users set sms = ".($_SESSION['sms'] + 50)." WHERE username = ".$_SESSION['username']) 
; 
+0

並且:請注意,在沒有反引號的情況下在SQL中設置一個值將只能使用整數值正常工作! – Sliq

+0

'where子句'中的未知列'maihannijat' 原因是用戶名自動轉換爲變量並取得maihannijat值。 –