2012-06-24 59 views
0

我寫了一個非常簡單的mysql行,用於搜索關鍵字的非常簡單的搜索欄,但是我遇到了一個錯誤。 (我有一種感覺,那是因爲搜索的長度)PHP-Mysql錯誤與%

$query = "SELECT * FROM entries WHERE name='%".$search."%' "; 

作品,但

$query = "SELECT * FROM entries WHERE desc='%".$search."%' "; 

沒有。

在數據庫中,名稱大約有20個字符,而desc大約有700個字符。我檢查拼寫和所有內容,它只是輸出一個錯誤。

這是不行的,因爲它有太多的字符掃描?

非常感謝(提前)!

+0

2個問題:1。你沒有錯誤檢查(否則這個問題qould沒有被要求在所有或以不同的方式),2。你可能是一個目標SQL注入。您應該使用準備好的語句,或者至少使用'mysql_real_escape_string()'函數。 – glglgl

+0

謝謝,但我不知道你將如何做Mysql的錯誤檢查? (順便說一句,是的,我保護我的SQL,但我沒有把它包括在我的例子裏都是) – Ninjiangstar

+0

好吧,如果你發現函數調用出錯了,你可以調用例如['mysql_error()'](http://php.net/manual/en/function.mysql-error.php)如果你使用舊界面。 mysqli和PDO接口肯定有相似的功能。 – glglgl

回答

5

desc是mysql的關鍵詞,你需要引用它,你應該使用LIKE而不是=,並確保你的$search已經被轉義。

$query = "SELECT * FROM entries WHERE `desc` LIKE '%".$search."%' "; 
+0

...並且不要忘記逃避'$ search' ... – poncha

+0

@poncha是的,這是真的。 – xdazz

+0

哦,我幾乎忘了LIKE,並且非常感謝那個答案! – Ninjiangstar