沿着mysql_real_escape_string的PDO过滤器可以一起工作吗?

时间:2015-03-18 18:25:26

标签: php mysql pdo

我们正在更改函数以从mysql_query进行查询 到pdo查询。

问题是我们有很多这些疑问......很多。 所以在某些地方我们已经有了像这样的

转义的查询
$query_result = 
    my_mysql_query("select * from table where field = '" .mysql_real_escape_string($the_field) . "'";

并且为了避免在改变时失去时间,我们希望保持mysql逃避

$query_result = 
    the_pdo_query("select * from table where field = '" .mysql_real_escape_string($the_field) . "'";

问题......这可能吗?这个实现可能存在其他问题吗?

2 个答案:

答案 0 :(得分:2)

使用预备陈述:

$PDO = new PDO(...connection data..);
$stmt = $PDO->prepare('SELECT * FROM table WHERE field = :placeholder');
$stmt->execute(array(':placeholder' => 22));
var_dump($stmt->fetchAll());

答案 1 :(得分:0)

不要这样做,请改用PDO-> quote(),它几乎与mysql_real_escape_string相当。

注意:PDO :: Quote为你添加''引号,而mysql_real_escape_string没有,所以

"INSERT INTO `users` VALUES('".mysql_real_escape_string($c,$username)."','".mysql_real_escape_string($c,$password)."');";

变为

"INSERT INTO `users` VALUES(".$pdo->quote($username).",".$pdo->quote($password).");";

..但是,理论上,鉴于连接编码和转义规则是相等的,我认为它们可以一起工作..但为什么这样做?对我没用。