我们正在更改函数以从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) . "'";
问题......这可能吗?这个实现可能存在其他问题吗?
答案 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).");";
..但是,理论上,鉴于连接编码和转义规则是相等的,我认为它们可以一起工作..但为什么这样做?对我没用。