2016-07-23 5 views
0

私は異なるフィールドを捕獲するために、SQLクエリを一致させたい:必要PHPのするpreg_match SQL更新句パターン

update nabi set fjfhj where jjj; 
  • tableからを必要

  • columnsここでナビを - ここfjfhj

  • whereオプション - ここJJJ

は現在、私は持っている:

/^update\s+(?<table>[a-z_]+)\s+set(?<columns>.*?)(\s+where\s+(?<where>.*?))?;?$/si 

私の問題がどこにあるかという句多分空!

ただしwhere句が正しく一致しません。 online exampleがあります。

不可能ですか?

+0

あなたはこのパターンで見つけるために何をしようとしていますか?いくつかのサンプルを表示し、結果を必要とします。 – zajonc

+0

いいえ、明らかではありません。キーワードおよび/または値を一致させますか?どんな更新クエリにもマッチすると思いますか?複数の設定値/騒音? (数字、等号、バックティック、複数の列などにマッチしないので、今は非常に制限されています)。 –

+0

だから動的でなければならない。それは私の正規表現のスキルを超えて行きます。クエリは非常に複雑になる可能性があります(例として引用符で囲まれた引用符)。これは簡単な作業ではありません。しかし、将来の参考に:あなたが実際に達成しようとしていることをあなたの質問でより明確にするために、間違った質問に答えるために時間を無駄にしないようにしてください!* –

答えて

0

PHPを使ってMYSQLクエリを解析したいと思えば、それを振り返ります。これを正しく実行するには、構文解析が必要なため、正規表現ではSQL構文が複雑になるため注意してください。私はあなたを救うかもしれないけれども利用できるPHPのライブラリがあることを参照してください。

http://www.phpclasses.org/package/9091-PHP-Parse-MySQL-queries-into-tokens.html