当前位置:Gxlcms > PHP教程 > mysql怎么一次执行多条SQL语句?

mysql怎么一次执行多条SQL语句?

时间:2021-07-01 10:21:17 帮助过:65人阅读

$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 "
  • ".$rs['name'];
    }
    ?>

    上面返回空记录。
    单独将$sql里面的内容放在phpmyadmin中执行正确,所以SQL语句应该是正确,估计连接方式那城出了问题
    请问如何写才能显示出来,谢谢!


    回复讨论(解决方案)

    我的本意是用php读mysql时,能像asp读mssql一样实现这样的写法:
    Declare @top2 int
    select @top2=min(mid) from (select top 1 mid from [musicbox] where rid='87503' order by mid desc) as db2
    SELECT top 20 mid,rid,mname,mauthor,madddate FROM [musicbox] as a where rid='87503' and a.mid <@top2

    请问如何用php来实现?谢谢!

    按“;”分割成多句,依次 mysql_query($sql)

    这是 php 防范 SQL 攻击的措施,不要试图改变他。
    相信你也不希望你的网站被攻击

    可以设置多个变量

    或者使用存储过程~

    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<@b");

    想办法写成一次执行的查询 例如UNION之类的

    mysql_query不支持同时运行多条SQL。
    你只能一次一次的去执行。或者就写一个sql语句。
    LZ想要的实现不了。

    如果要同时执行这些sql的话,不能用;隔开一起执行,只能一个一个的执行,或者将这些sql放入一个数组,然后循环执行,建议加上事务处理

    存储过程执行。

    喽主想要实现也不是不可能,不过不是那样的形式,你可以试试用for()循环呐,这样不就依次执行了嘛

    5楼方式是最接近思路的,但是效率很差。

    从300万数据中的50万条处进行分页读取,
    用php分别执行2次sql语句,in(**ids**)方法和id>**Maxid**,需要200-300毫秒,
    按5楼方式执行3次SQL语句,需要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


    亲测完美解决

  • 人气教程排行