2

query()基本的にであると呼ばれるメソッドを持つmysqlクラスがあり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:コード内に**が含まれていることをお詫びします、チェックマーク内を太字にする方法がわかりません

4

2 に答える 2

1

}} を使用すると、終了する }} のためにエスケープする必要があるため、これは悪い考えです。基本的に、まったく同じことを行う新しい構文を発明しています。

代わりに準備済みステートメントを使用してください。

于 2011-05-05T11:14:51.537 に答える
1

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

于 2011-05-05T08:41:22.430 に答える