2012-03-03 10 views
1

これらの2つのPHP MySQLクエリが機能します。私のSQLクエリを1つにまとめるのはなぜ機能しないのですか?

mysql_query("DELETE FROM videos WHERE id='10';"); 
mysql_query("DELETE FROM comments WHERE videoId='10';"); 

この単一のクエリは、後者のDELETE操作に関連するMySQL構文エラーのために失敗します。

mysql_query("DELETE FROM videos WHERE id='10';DELETE FROM comments WHERE videoId='10';"); 

私は苦労して、構文エラーを見ることができません。それは何ですか?

+0

複数のコマンドを1つのクエリで使用できますか? – Randy

+0

他の質問に似ていますが、これははるかに簡潔です – Randy

答えて

1

mysql_queryで複数のクエリを実行することはできません。本当に欲しいのであれば(セキュリティリスク!)、mysql_multi_queryを使用してください。 (新しいmysqli_*関数を使用する必要があります)。 2つの呼び出しをトランザクションに埋め込むことをお勧めします。

しかし、実際にはforeign key constraintsを定義したいと思うようです。すでにInnoDBを使用している場合は、それらを強くお勧めします。

+0

ありがとう!一度に多数のクエリを実行するのはなぜセキュリティリスクですか?実際、私は外部キーの制約を強制しようとしています。 – dangerChihuahua007

+1

クエリでユーザ指定のデータを使用し、単一の値(SQLインジェクション)をエスケープしないと、セキュリティ上のリスクが発生します。これはプリペアドステートメントでは起こり得ませんが、プリペアドステートメントでは1つのコマンドで複数のクエリを実行することはできません。 – knittl

関連する問題