2012-08-07 108 views
0

我不知道爲什麼下面的MySQL查詢不斷給我下面的錯誤:爲什麼這是下面的mySQL查詢失敗?

You have an error in your SQL syntax; check the manual that corresponds to your MySQL  server version for the right syntax to use near 'http://some.url' at line 2 

的SQL查詢本身是這樣的:

DB_ExecuteQuery("UPDATE driver 
       SET windowsPhoneID = $uri 
       WHERE userID = $userID"); 

$用戶ID就是該表的主鍵只是一個VARCHAR。我不知道爲什麼$ uri部分無效。 WindowsPhoneID應該存儲爲TEXT,所以沒有任何不匹配的類型或類似的東西。

任何指針?

+1

http://xkcd.com/327/ – 2012-08-07 23:04:22

+0

從這段小小的代碼中,你不可能知道OP是否已經對輸入進行了消毒處理。僅僅因爲有人不使用預準備語句並不意味着他們對SQL注入開放。 – jprofitt 2012-08-07 23:56:01

+1

@jprofitt @jprofitt你是對的,他無法確定,但是,提供警告並沒有什麼壞處,當它以這種方式完成時 - 他會從我那裏得到+1;) – alfasin 2012-08-08 00:31:55

回答

6

您應該添加周圍的參數報價:

DB_ExecuteQuery("UPDATE driver 
       SET windowsPhoneID = '$uri' 
       WHERE userID = '$userID'"); 

備註:
而像邁克輕輕的建議,請使用PDO或MySQLi的,以防止SQL注入。

+0

謝謝!這很好用! – docaholic 2012-08-07 23:13:30