php - sprintf() 如何防止 SQL 注入(inject)?

标签 php mysql sql-injection

我听说 sprintf() 可以防止 SQL 注入(inject)。是真的吗?如果是,怎么办?

为什么人们推荐这样写查询:

$sql = sprintf('SELECT * FROM TABLE WHERE COL1 = %s AND COL2 = %s',$col1,$col2);

最佳答案

sprintf 不会保护你!它只替换 %s

你必须 mysql_real_escape_string 这样:

$sql = sprintf('SELECT * FROM TABLE WHERE COL1 = "%s" AND COL2 = "%s"',
mysql_real_escape_string($col1),
mysql_real_escape_string($col2));

注入(inject)更安全

注意:我建议你看看PDO ,这是我喜欢用于 DBconections 和查询的内容

关于php - sprintf() 如何防止 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6646731/

相关文章:

php - 从数据库中选择 php 脚本中的 id (Android)

php - 在 Twig 文件之间导入内容

mysql - WordPress 数据库密码 : how to obtain dynamically instead of hardcoding in wp-config. php

mysql - SQL按日期分组问题

sql-server - 如何利用 "EXEC @sql"?

php - 循环关闭 MySQL 结果并构建自定义数组

php - mysql 数据从 php 发送到电子邮件

python - 无法在 Python-MySQL 表中迭代插入值

php - 如何防止 PHP 中的 SQL 注入(inject)?

java CallableStatement 与 SELECT 关于 SQL 注入(inject)