関数(mysql_query)を使用して選択クエリと挿入クエリを一緒に実行したいのですが、うまくいきません。私はこのようなことをするつもりです:
$sql="select * from texts; insert into date ('time') values ('2012');";
mysql_query($sql);
それを行う方法はありますか?
mysql_query()
一意のクエリを送信します(複数のクエリはサポートされていません)。これがデフォルトの動作ですが、これを回避する方法があります。
ただし、これを行うと、最初のクエリの結果コードのみが出力として与えられますmysql_query()
。
フラグ 65536 を mysql_connect の 5 番目のパラメーターとして渡すだけです。フラグはMySQL Client flagsで定義されています。
#define CLIENT_MULTI_STATEMENTS 65536 /* Enable/disable multi-stmt support */
#define CLIENT_MULTI_RESULTS 131072 /* Enable/disable multi-results */
mysql_connect()
したがって、これに一致するようにコードを編集します。
mysql_connect($host, $username, $password, false, 65536);
警告:
mysql_query($query)
、最初のクエリの結果が得られます。複数の結果を取得するために連結 を試すことができます。$query
131072
65536
sql.safe_mode
で 1 に設定されている場合、これは機能しません。もう 1 つの方法は、ライブラリmysqli
の代わりに使用することです。 各クエリの配列内の出力をmysql
サポートし 、提供します。$mysqli->multi_query()
MySQL では、1 つのステートメントで複数の選択クエリを渡すことはできません。
mysql_query()
通常の方法では複数のクエリの実行をサポートしていません。以下のようなものを使用してください。
<?php
$str="query1;query2;"; // say $str="select * from texts; insert into date ('time') values ('2012');";
$query = explode(';',$str);
// Run the queries
foreach($query as $index => $sql)
{
$result = mysql_query($sql);
// Perform an additional operations here
}
?>
mysql api のどれも同時に複数のクエリを処理することはできません。mysql コンソール ユーティリティでさえ、入力を解析してクエリを次々に実行しますが、php の mysql_query は処理しません。それを行う独自の関数を作成するか、すべてのクエリを配列に入れて、ループ内の各要素に対して mysql_query を実行するだけです。
mysqli_multi_query 関数を使用できますが、PHP mysqli 拡張機能を使用できます。(PHP の mysql 拡張機能の代わりに mysqli を使用することをお勧めします。より多くの機能と機能が含まれているためです)