使用regexp自动添加mysql_real_escape_string

时间:2011-05-05 08:36:44

标签: mysql regex preg-replace mysql-real-escape-string

我有一个mysql类,它有一个名为query()的方法,基本上是mysql_query()。此方法接收查询作为参数,如下所示:

insert into table set field1 = 'value 1', field2 = 'value 2' 要么 select id from table where field1 = 'value 1', field2 like '%value 2%'

当然,这不是一个很好的做法,因为所有的值都应该首先通过mysql_real_escape_string()

我想使用正则表达式来捕获一些信息传递给方法的所有模式,比如粗体部分:

insert into table set field1 = '**value 1**', field2 = '**value 2**'

问题在于,如果我让preg_replace变得贪婪,它最终会抓住:

insert into table set field1 = '**value 1', field2 = 'value 2**'

如果它不贪婪,它会抓住:

insert into table set field1 = '**value **' 1', field2 = 'value 2'(其中,filed1实际上=“value'1”。

一个选项是将值放在分隔符之间,如下例所示,但这对我来说似乎不是最好的方法:

insert into table set field1 = {{value 1}}, field2 = {{value 2}} 然后只需捕获“{{”和“}}”之间的所有文字,并将其替换为mysql_real_escape_string()'ed值。

有没有办法以更强的专业方式执行此操作?

ps:抱歉在代码中有**,我不知道如何在刻度内加粗

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

这是一个坏主意,因为如果你要使用}}那么现在你将不得不逃避关闭}}。你基本上是在发明一种新的语法来完成同样的事情。

改为使用预备语句。