使用PHP防止注入SQL

Dav*_*hta 2 php mysql sql code-injection

因为我的陈述是这样的

"SELECT * FROM `box` WHERE `thing` = '{$variable}'
Run Code Online (Sandbox Code Playgroud)

我可以简单地清理它

$variable = str_replace("'","\'",$variable);
"SELECT * FROM `box` WHERE `thing` = '{$variable}'
Run Code Online (Sandbox Code Playgroud)

那会有用吗?我的主机不支持mysql转义,我不使用mysqli.

Que*_*tin 16

使用参数化查询(PDO可能是您最好的选择).


Jac*_*kin 7

我非常怀疑你的主机不支持这个mysql_real_escape_string功能.

$variable = mysql_real_escape_string($variable);

$sql = "SELECT * FROM `box` WHERE `thing` = '{$variable}'";
Run Code Online (Sandbox Code Playgroud)

如果您确实没有安装MySQL,那么您可以根据您正在使用的RDBMS使用以下转义函数之一:

pg_escape_string

sqlite_escape_string

db2_escape_string

ingres_escape_string