想要使用preg_replace替换某些单词

时间:2014-04-11 10:42:02

标签: php

您好我正在尝试创建一个运行查询的数据库类。因为我将where条件作为参数发送到像id=$no AND name='vig'这样的函数。现在我想用mysqli_real_escape_string替换值,如id=mysql_real_escape_string($no)。像这样。我怎么能用preg_replace做到这一点。

我在搜索时得到了这个正则表达式,但我不知道如何在preg_replace中使用它。 '/(["\'])([^"\']+)\1/'

2 个答案:

答案 0 :(得分:2)

请不要这样做!

使用预备语句和参数化查询,使用mysqliPDO

How can I prevent SQL injection in PHP?

答案 1 :(得分:1)

这是有史以来最危险的事情,我不想写这个:

<?php

$test="we will ' hack your db";
$test2=" ' OR SANITIZE";

$where='`$test` = \'1\' and `$test2` = \'2\'';

$where=preg_replace('/(\$[^ `]+)/e','mysql_real_escape_string($1)',$where);

echo($where);

?>

这很危险,不仅因为mysql_real_escape_string,还因为带有/ e(执行)标志的preg_replace。只是看看它是否以及如何完成。

如果你还是要学习,请学习预备语句