2016-12-07 224 views
2

我最近從Windows(movamp)切換到linux(燈),並且我有一個問題(語法錯誤)與查詢,我不明白爲什麼。 下面是查詢和錯誤味精,我得到:MySQL的查詢問題:WHERE子句

"SELECT * FROM products WHERE trash='false'" 

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本「在行1選擇* FROM產品WHERE垃圾=」使用近「\」假\「假」

我總是寫我的查詢與語法正確的語法手冊,我從來沒有遇到過問題。

我曾經在windows上運行我的代碼(php 4.1.22 mysql 5.2.11)並使用了mysql_query()函數,代碼工作得很好。 現在我使用(php 7.0.8 - mysql 5.7.16)並使用mysqli_query()函數來執行查詢

+0

使用'mysqli_escape_string'因爲分配它們 – Beginner

+0

你試過沒有單引號嗎?這似乎是你試圖逃避單引號,這是造成問題 –

+1

http://stackoverflow.com/questions/9596652/how-to-escape-apostrophe-in-mysql –

回答

1

你的語法錯誤,顯示了一些虛假的反斜槓是不存在的查詢,就好像你實際上是運行以下命令:

SELECT * FROM products WHERE trash=\'false\' 

由於沒有連一個完整的PHP語句來檢查我們只能推測,和我猜測是 - 因爲你是從一個非常古老的PHP版本升級 - 你可能會遇到一些問題magic quotes。這個「功能」不再存在,所以服務器中沒有任何東西可以自動注入反斜槓,所以它必須是你的代碼,它是故意執行它的代碼。據說PHP/4在2004年被PHP/5所取代(這就像12年),並且在去PHP/7的路上發生了很多變化:遷移將比僅僅將代碼放入新的服務器。

0

嘗試刪除單引號,或嘗試反轉單引號和雙引號。如果沒有任何工作使用具有錯誤值的變量。

0
"SELECT * FROM `products` WHERE `trash` ='false'" 

試試這個(雖然你的情況應該也可以)

也儘量去除雙引號,如果你試圖在phpMyAdmin運行SQL查詢或喜歡。

0

我想感謝大家的回答和您的意見。你幫我弄清楚問題是什麼:整個查詢字符串正在被轉義,而不是隻有逃脫所需的數據。

我覺得啞巴。這很明顯。

無論如何。謝謝你的貢獻。