2012-02-09 30 views
0

$query1 = 'SELECT * FROM table WHERE field = ?';は、クエリ文字列に基づいて

$query2 = 'UPDATE table SET field = ?';

をクエリのタイプを決定どのようにして検出することができますか?私はSELECTためstrposをすれば

は、それが(それが見つかった場合、クエリは読み取り専用です)十分ですか?それとも、私が扱う必要がある他の状況はありますか? mysql_num_rows()が選択されたどのように多くのあなたを示しながら

+0

私は、SELECT文は、サブクエリで使用することができますので、SELECTをチェックすることは良いアイデアだとは思いません。 UPDATEが含まれているものは、しかし、間違いなくデータベース – BeRecursive

+0

は(TAB2からABCを選択)= col1の設定 '更新テーブルについて考え'ので、 –

+0

かについて '場合(strpos( 'SELECT'、$クエリ)=== 0)に変更します$ is_read_only = true; '? – Alex

答えて

1

挿入によりaffecedされた行の数が...

mysql_affected_rows()それは、MySQLのショーと仮定するの/ etc /更新を削除します。どの関数が値を返すかによって、応答の種類を判断できるはずです。

+0

OPはこれを決定する方法を非常に明確に求めています*質問とコメントを正しく答える前に。 – DaveRandom

+0

あなたが正しいと確信しています - OPは質問への返答方法を決定するよう求めています。上記のコメントをご覧ください:@jonathan - no。私は単純なdb APIを構築しています。何を返すべきかを判断する必要があります。私はそれを「100件のレコードを更新しました」または「ここで見つけたレコードです」と解釈します。 – FreudianSlip

+0

それが本当であっても、単純な 'is_bool()'/'is_resource()'(またはドライバに依存する 'is_object()')のチェックは、返す結果があるかどうかを判断する信頼性の高い方法です。 'mysql_affected_rows()'は、 'SELECT'の後に結果を返します。 – DaveRandom

関連する問題