2015-11-07 103 views
0

我有一個代碼:MySQL的全文搜索撇號(單引號)錯誤

$search = $_GET ['search']; 
$query = $db->prepare("SELECT COUNT(*) AS num FROM table WHERE MATCH (id,keywords) AGAINST ('$search*' IN BOOLEAN MODE)"); 
$query->execute(); 

此代碼的工作,但有一個問題。如果用戶鍵入帶撇號(')的搜索短語,例如:Misha的工作,查詢中斷並給出錯誤。

此外,此代碼安全的SQL注入?

更新:代碼是不安全的,我檢查了一些手冊並編輯它。 enter link description here

感謝

+0

是的,與布爾全文搜索 – Misha

回答

0

查找到mysqli_real_escape_string上查詢之前,$搜索使用。

+0

有點不同,但我使用PDO,相當於PDO中的mysqli_real_escape_string? – Misha

+0

隨着PDO你想使用參數化綁定。你這樣做的方式本質上是不安全的。 [Read Up On It](http://php.net/manual/en/pdostatement.bindparam.php) – MiDri

+0

感謝您的回覆。我檢查了一些手冊並編輯了我的代碼。這裏是[鏈接](http://security.stackexchange.com/questions/104926/mysql-full-text-search-safety) – Misha