使用mysqli_real_escape_string在MySqli中清理我的数据

时间:2013-04-03 10:23:06

标签: php mysql mysqli

我正在将我的函数从mysql转换为mysqli。在mysql中,我使用了一个通用函数,我可以将数据解析为删除SQL威胁。我已尝试在mysqli中使用此方法,但任何通过它的数据都不会退出。如果我var_dump字符串我得到结果

string(0) ""

这是我的功能

function sanitize($data) { 
return htmlentities(strip_tags(mysqli_real_escape_string($data))); 
} 

2 个答案:

答案 0 :(得分:0)

您实际上不需要使用myslqi_real_escape_string()

相反,只需使用prepared statements(查看此PHP文档页面中的示例),您就可以了。

除了防止不良数据之外,准备好的语句也可以更快地运行,尤其是对于重复数据。

答案 1 :(得分:-1)

  

这是我的功能

从PHP清理输出必须适合数据传输的介质。所以你应该使用mysql [i] _real_escape_string()进入你的DBMS数据,htmlentities用于进入html或xml的内容,urlencode用于进入网址的数据,quoted_printable_encode用于电子邮件中的文本内容....

stip_tags将HTML转换为纯文本。只有在没有显式方法转义目标时,才应使用add_slashes功能。

通过混合和匹配,您严重损害了安全目标。

使用mysql [i] _real_escape_string()准备进入DBMS的数据。将它应用于已经使用strip_tags()处理的字符串应该没有任何不良影响(但是反过来会这样做会BREAK)。

使用htmlentities以便在发送到浏览器之前转义内容。