做什么mysql_escape_string()
?我正在更新一个数据库。当我使用$_POST('variable')
它时,它没有得到更新,但与它一起使用mysql_escape_string($_POST())
它工作正常。我通过 ajax 调用它。
问问题
2513 次
1 回答
6
mysql_escape_string
是 PHP mysql 扩展功能之一。它转义作为函数参数提供的字符串。转义意味着在特殊字符前添加反斜杠 (\
) 。
mysql_escape_string
旨在与mysql_query
函数一起使用,以安全地将 MySQL 查询参数传递给查询。安全意味着不可能影响和更改所需的查询行为。通过搜索“sql injection”了解更多信息,例如MDN 上的Secure Development Guidelines。- 转义的特殊字符
mysql_escape_string
有:空字节 (0
)、换行符 (\n
)、回车 (\r
)、反斜杠 (\
)、单引号 ('
)、双引号 ("
) 和替换 (SUB
, or\032
)。%
并且_
没有被这个函数转义。 mysql_escape_string
自 PHP 5.3.0 起已弃用。它应该被替换为mysql_real_escape_string
函数,它除了对字符串进行转义外,还考虑到连接的当前字符集。- 两者都使用,
mysql_escape_string
并且不推荐使用MySQLi或PDO_MySQL扩展mysql_real_escape_string
的推荐替代方案。
$_POST('variable')
在您的情况下,最可能不起作用的原因是它包含一个或多个特殊字符,因此您正在执行的 MySQL 查询被无意更改和损坏。您使用 AJAX 调用它,如果您没有处理 AJAX 错误,您可能看不到错误消息。
于 2012-06-30T14:05:39.400 回答