我有一个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:抱歉在代码中有**,我不知道如何在刻度内加粗
答案 0 :(得分:1)
答案 1 :(得分:1)
这是一个坏主意,因为如果你要使用}}那么现在你将不得不逃避关闭}}。你基本上是在发明一种新的语法来完成同样的事情。
改为使用预备语句。