2015-11-20 207 views
-3

我使用的是mysqli_query(),其動態變量爲$categoryName,其中$categoryName將是動態的,其中類別名稱將根據用戶從表單提交進行提取。帶特殊字符的mysqli_query

在我的類別名稱提交表單有Food, Vintage clothing, Leisure, Angel's等等

我還是很新的查詢從數據庫內容,目前正在設法拿出使用mysqli_query()從數據庫中查詢,如下所示:

$sqlCommand = mysqli_query($conn, "SELECT * FROM products WHERE category='$categoryName'"); 

一切都很正常,我設法查詢與我現有的類別名稱的數據庫,但是,只有一個不工作是Angel's類別能夠與它'撇符號。

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in....... 

我懷疑有某種方法就像過濾器,需要mysqli_query()之前叫什麼名字?

+1

嘗試使用'$ catName = mysqli_real_escape_string($ conn,$ categoryName);'然後在查詢中使用'$ catName' –

+1

使用準備和參數綁定。否則,你會錯過'mysqli'的優點。 –

+0

@SamSwift웃是它的工作原理:) – Vincent1989

回答

2

使用mysqli_real_escape_string

$cat_name = mysqli_real_escape_string($conn, $categoryName); 
$sqlCommand = mysqli_query($conn, "SELECT * FROM products WHERE category='$cat_name'"); 
1

這就是所謂的SQL注入。在這種情況下,它不是通緝並且在正常業務中發生。您應該閱讀an article關於SQL注入並在未來的項目中阻止它。

可以逃脫使用

mysqli_real_escape_string($conn, $categoryName); 

快樂編碼這個字符串。

+1

您需要添加第一個參數作爲連接字符串'mysqli_real_escape_string($ link,$ categoryName);' – Saty