mysql_real_escape_string()不应该在数据库中留下斜杠吗?

Chr*_*ris 3 php mysql escaping smarty

我使用smarty和mysql_real_escape_string()用户输入,当我用'或插入一些代码",并在phpmyadmin中查找它显示没有反斜杠.

当我从DB获得记录时,我也没有反斜杠.但是,当我只是传递转义字符串而不插入数据库时​​,它会被反击.

不应该添加斜线,插入它们然后我会在输出时剥离它们?或者我错过了什么?

pil*_*eks 12

你错过了它 - 用反斜杠转义是为了确保查询没有格式错误,例如这样的东西肯定会破坏并可能导致SQL注入风险:

insert into table values ('whatever 'this' is')
Run Code Online (Sandbox Code Playgroud)

并且没有任何东西会被保存在表格中,而这个:

insert into table values ('whatever \'this\' is')
Run Code Online (Sandbox Code Playgroud)

将在表格中保存"此'为'的任何值".