2015-11-20 212 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