2

我有一个 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实际上是=“值'1”。

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

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

有没有办法以更专业的方式做到这一点?

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

4

2 回答 2

1

使用 PDO: http: //php.net/manual/en/book.pdo.php

于 2011-05-05T08:41:22.430 回答
1

这是一个坏主意,因为如果您要使用 }},那么现在您将不得不为结束 }} 转义。你基本上是在发明一种新的语法来做同样的事情。

改用准备好的语句。

于 2011-05-05T11:14:51.537 回答