带编码输入参数的SQL查询在MySQL中返回空结果

时间:2014-08-06 08:38:55

标签: php mysql sql mysql-real-escape-string

我想从MySql(yii框架)中获取备件。部分标题包含',用于 例如:OUTLANDER '03-06 出于安全原因,我将查询字符串参数编码为htmlspecialchars()(将特殊字符转换为HTML实体)以成为这样的查询:

SELECT *
FROM assortment
WHERE title LIKE "%OUTLANDER '03-06 %"
LIMIT 0 , 10

然而会产生空结果

如果我只通过addign斜杠转义',那么这样的查询就可以了:

SELECT *
FROM assortment
WHERE title LIKE "%OUTLANDER \'03-06 %"
LIMIT 0 , 10

有什么问题?我是否仍然需要将htmlspecialchars()应用于输入参数以使其成为安全HTML实体的安全原因,这将是一个什么解决方案?

2 个答案:

答案 0 :(得分:0)

我认为你必须使用" mysql_real_escape_string()"代替。

参考:http://www.w3schools.com/php/func_mysql_real_escape_string.asp

答案 1 :(得分:0)

函数htmlspecialchars()并不意味着在查询中转义字符串。您应该使用以下功能之一: