2012-06-01 2 views
5

PHPを使用して、SQLクエリーのwhereステートメントからフィールド名と値を取り出し、それらを変更して元に戻す必要があります。PHPを使用したSQLの解釈

だから、私はこの文字列が与えられていると言って:field='value' AND field2<7フィールドとフィールド2をフィールド名として認識し、次に関数field()をフィードして、それらをクエリに戻す必要があります。 '値'と7のものと同じですが、value()関数を使用してフィードします。また、各値がどのフィールドに関連付けられているかを知るのに役立ちます。

コードを作成するのに数千行かかることはありませんか?

私はそれはのようなものなど、さまざまな可能な入力、たくさんの仕事をする必要があります:私は、オープンソースとかなり良いですphp-sql-parserプロジェクトを使用しましたtable.field BETWEEN 7 AND 10またはfield<7 AND (field2=3 OR field3=4)

+0

再利用可能なものが必要ですか、それとも文字列の置き換えだけで修正できますか? – acme

+1

コンテキストとは何ですか?ドメインが限定されている場合は、正規表現を使用できます。任意のクエリで作業する必要がある場合は、SQLパーサーを使用する必要があります。 – Matthew

+0

文字列の置き換えを行うことができれば多種多様な入力を処理する必要がありますが、文字列の置き換えより複雑な処理が可能です。 –

答えて

4

+0

SQLをすばやく解析できますか?ここでは時間が問題ですが、クエリごとに数秒かかると問題になります。 –

+0

私は分かりません。あなたのビジネスニーズに十分に速いかどうかを調べるには、アプリケーションでいくつかのプロファイリングを行う必要があります。 – mellamokb

+1

サイトに用意されているサンプルスクリプトにはスピードテスターがあります。 **単純なクエリ0.0025022029876709秒** **非常にやや単純な文0.0020349025726318秒**非常に複雑な文0.025777816772461秒** – Deltik

関連する問題