次の文字列があるとします(これが MySQL ステートメントであることは忘れてください)。
SELECT * FROM users WHERE name = 'fred bloggs' AND age=21 AND address='Mountain View, CA 94043' LIMIT 1
WHERE 句でフィールド名と値を抽出する方法が必要なので、次のような配列があります。
Array
(
[name] => fred bloggs
[age] => 21
[address] => Mountain View, CA 94043
)
これは動的な MySQL 文字列であるため、名前、年齢、または住所をハードコードすることはできません。
私が予測できる問題は次のとおりです。
- フィールド名を見つけると、関数は各フィールド名に一致するようにすべての有効な演算子を知る必要があります (以下で使用する配列を参照してください)。
- スペースは保証されていません (例: age=21)
- ' と ' 内の値を検索しますが、' が文字列内にある場合は壊れません
- ' と ' で囲まれていない値 (数値やその他のフィールド名など) の検索 (個別に処理する必要があります)
正規表現または文字列関数のいずれかを使用してこれを行う方法を知っている人はいますか?
必要な場合の演算子は次のとおりです。
$operators = array('+', '-', '*', '/', '^', '=', '<>', '!=', '<', '<=', '>', '>=', 'like', 'clike', 'slike', 'not', 'is', 'in', 'between', 'and', 'or');