2016-03-13 101 views
-5

我有一些表的MySQL數據庫。在PHP腳本存在此代碼mysql查詢錯誤1064沒有撇號

$data = mysql_query("SELECT * FROM table1 WHERE Id='".$id."' LIMIT 1"); 

它工作正常。

現在我添加1名新表,並請求mysql_query得到:

錯誤#1064:您的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法附近「INSERT INTO 使用手冊 ...

這個語法

SELECT * FROM `table2` WHERE Id='".$id."' LIMIT 1 

PHP腳本工作如果沒有這個符號'腳本返回錯誤消息。怎麼可能,選擇查詢到table1工作正常和類似的查詢不工作沒有'符號圍繞表名稱?

+2

只需停止使用'mysql_ *'功能... – hjpotter92

+2

您是否直接在您運行第二個查詢phpmyadmin或使用php代碼嘗試運行它? –

+0

直接在phpmyadmin中運行 – Arman

回答

0

我認爲你的代碼的表名不是table1和table2。此錯誤的振振有辭可能是你的表名是「保留字」

例子:

它的工作原理

Select * from table1 

下面的例子將得到錯誤,因爲使用的保留字

Select * from update 

要更正此錯誤,必須在撇號'

+0

表名是'order'。它是保留字? – Arman

+0

是的!它是! Order是一個mysql命令。所以你需要回刻錄(不像你說的那樣單引號) –

+0

這解釋了爲什麼我得到這個錯誤。非常感謝!!! – Arman

0

您的問題存在很多問題,我非常害怕人們會因爲您的編碼質量極差而關閉它,而不是將它用作教學課程。開始了!!

1.停止使用mysql_功能!

mysql_功能已被棄用超過10年現在。使用它們是無可奈何的。它們已被棄用至少三年,並且不再存在於現代PHP中。

改爲使用PDO。 http://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html

2.停止使用SQL注入!!開始使用準備好的語句

這就是爲什麼你的查詢失敗。

How can I prevent SQL-injection in PHP?

3.拓展您的PHP技能選擇的答案實現。

您的驗證碼質量很差,您今天絕對必須開始生長今天。你只是通過繼續這樣的做法使網絡變得更糟,毫無疑問,如果你正在做的事情已被建議,強烈,反對12年的更好的一部分,你在做其他真的很糟糕東西以及。

所以請今天再次開始學習!