mysqli_query包含特殊字符

时间:2015-11-20 09:09:39

标签: php sql mysqli

我将mysqli_query()与动态变量$categoryName一起使用,其中$categoryName将是动态的,其中类别名称将根据用户从表单提交来获取。

在我的类别名称提交表单中,有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()之前需要调用某种类似过滤器的方法吗?

2 个答案:

答案 0 :(得分: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 :(得分:1)

这称为 SQL-Injection 。在这种情况下,它不是通缉的,而是发生在正常业务中。您应该阅读有关SQL注入的an article并在将来的项目中阻止它。

您可以使用

转义该字符串
mysqli_real_escape_string($conn, $categoryName);

快乐的编码。