3

関数(mysql_query)を使用して選択クエリと挿入クエリを一緒に実行したいのですが、うまくいきません。私はこのようなことをするつもりです:

$sql="select * from texts; insert into date ('time') values ('2012');";
mysql_query($sql);

それを行う方法はありますか?

4

6 に答える 6

5

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);

警告:

  1. 指定された でのみmysql_query($query)、最初のクエリの結果が得られます。複数の結果を取得するために連結 を試すことができます。$query13107265536
  2. これは PHP < 4.3.0 では機能しません。
  3. php.inisql.safe_modeで 1 に設定されている場合、これは機能しません。

もう 1 つの方法は、ライブラリmysqli の代わりに使用することです。 各クエリの配列内の出力をmysqlサポートし 、提供します。$mysqli->multi_query()

于 2012-05-19T07:02:30.493 に答える
1

MySQL では、1 つのステートメントで複数の選択クエリを渡すことはできません。

于 2012-05-19T07:02:23.320 に答える
0

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
}
?>
于 2012-05-19T07:04:11.587 に答える
0

mysql api のどれも同時に複数のクエリを処理することはできません。mysql コンソール ユーティリティでさえ、入力を解析してクエリを次々に実行しますが、php の mysql_query は処理しません。それを行う独自の関数を作成するか、すべてのクエリを配列に入れて、ループ内の各要素に対して mysql_query を実行するだけです。

于 2012-05-19T07:10:01.080 に答える
0

mysqli_multi_query 関数を使用できますが、PHP mysqli 拡張機能を使用できます。(PHP の mysql 拡張機能の代わりに mysqli を使用することをお勧めします。より多くの機能と機能が含まれているためです)

于 2012-05-19T07:10:04.817 に答える
0

mysql_query()一意のクエリを送信します

mysql_queryを参照

複数のクエリの場合、 mysqliを見ることができます

于 2012-05-19T07:13:23.020 に答える