ホームページ  >  記事  >  バックエンド開発  >  mysql はどのようにして一度に複数の SQL ステートメントを実行しますか?

mysql はどのようにして一度に複数の SQL ステートメントを実行しますか?

WBOY
WBOYオリジナル
2016-06-23 13:46:525047ブラウズ

$sql="
SELECT @a:=id FROM csdn order by id asc limit 30,1;
SELECT @b:=id FROM csdn order by id asc limit 60,1;
SELECT * from csdn where id>@a and id<@b;
";
$result=mysql_query($sql);
while($rs = @mysql_fetch_array($result,MYSQL_ASSOC)){//空のレコード
echo "< ;li>".$rs['name'];
}
?>

上記は空のレコードを返します。
phpmyadminに$sqlの内容を別途入れると正常に実行されるので、SQL文は正しいはずです 接続方法が間違っていると推測されます
表示できるようにする書き方を教えてください。あなた!


ディスカッションへの返信 (解決策)

私の本来の意図は、php を使用して mysql を読み取る場合、asp が mssql を読み取るのと同じように次のように記述できることです。

Declare @top2 int
select @top2=min(mid ) from ( select top 1 mid from [musicbox] where riding='87503' order by mid desc) as db2
SELECT 上位 20 Mid,rid,mname,mauthor,madddate FROM [musicbox] as a whererid='87503' and a.mid <@top2

これを実現するために php を使用するにはどうすればよいですか?ありがとう!

mysql_query($sql) の順に複数の文に分割するには、「;」を押してください


これは SQL 攻撃を防ぐための PHP の対策です。変更しないでください。
あなたの Web サイトが攻撃されるのは望ましくないと思います

複数の変数を設定することもできます

またはストアド プロシージャを使用することもできます ~

mysql_query は複数の SQL の同時実行をサポートしていません。 ; で区切って個別に実行する必要があります


mysql_query("SELECT @a:=id FROM csdn order by id asc limit 30,1");
mysql_query("SELECT @b:=id FROM csdn order by id) asc limit 60,1");
mysql_query("SELECT * from csdn where id>@a and id

UNION などの 1 回実行できるクエリを記述する方法を見つける

mysql_query複数のクエリの同時実行 SQL はサポートされていません。

一度に 1 つだけ実行できます。または、SQL ステートメントを記述するだけです。
LZが望んでいることは達成できない。

これらの SQL を同時に実行したい場合は使用できません。別々に実行する場合は、1 つずつ実行するか、これらの SQL を配列に入れてループで実行する必要があります。トランザクション処理

ストアド プロシージャの実行を追加することをお勧めします。

達成することは不可能ではありませんが、その形式ではありません。for() ループを使用して、順番に実行してみてください

5 階の方法がアイデアに最も近いですが、効率は非常に貧しい 。

300 万のデータから 500,000 項目からページ読み取りを実行します。
PHP を使用して、in(**ids**) メソッドと id>**Maxid** の 2 つの SQL ステートメントをそれぞれ実行します。これには 200 ~ 300 ミリ秒かかります。
5階の方法ではSQL文を3回実行すると400~600ミリ秒かかります。

この考えはやめましょう。助けてくれてありがとう、ありがとう!

&allowMultiQueries=true

MySQL で複数のステートメントを実行するには、allowMultiQueries パラメータを true に設定する必要があります。これは MySQL Connector/J 3.1.1 以降でのみサポートされます。

接続を確立するときに次のように設定するだけです: jdbc:mysql://127.0.0.1/sample?user=root&password=&allowMultiQueries=true


個人的なテストと完璧なソリューション

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。