PHP& SQL:保护此查询免受不使用PDO的SQL注入的最佳方法

时间:2010-10-20 14:58:08

标签: php sql sql-server sql-injection

我有一个针对mssql数据库运行的查询,我没有使用PDO驱动程序。是否有可以使用的准备好的陈述?

以下是查询:

$tsql = "INSERT INTO cplinktable (liferayid, bmsid, autotaskid, waspdb, cpid) VALUES ($liferayid, $bmsid, $autotaskid, '$waspdb', $cpid)";

感谢,

Jonesy

5 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

你至少应该逃避这些价值观。

PHP Manual - mysql_real_escape_string

答案 2 :(得分:0)

$query = sprintf("INSERT INTO cplinktable (liferayid, bmsid, autotaskid, waspdb, cpid) VALUES ('%s','%s','%s','%s','%s')",
            mysql_real_escape_string($liferavid),
            mysql_real_escape_string($bmsid),
            mysql_real_escape_string($autotaskid),
            mysql_real_escape_string($waspdb),
            mysql_real_escape_string($cpid));

答案 3 :(得分:0)

就像在字符串上使用mysql_real_escape和在数字/整数/双打上进行类型转换一样简单

(int)$number; //Safe
(double)$double; //Safe
mysql_real_escape_string($string); //Safe

用于插入数据库的每一条数据都是安全的

答案 4 :(得分:-3)

尝试使用sprint()

准备语句
$tsql = "INSERT INTO cplinktable (liferayid, bmsid, autotaskid, waspdb, cpid) VALUES (%d, %d, %d, '%s', %d)";

$tsql = sprintf($tsql, $liferayid, $bmsid, $autotaskid, $waspdb, $cpid);
echo $tsql; // you would execute this but printing to the screen to show the query