欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2024-01-07 16:48:10
...
$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 ";

$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
    请问如何用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

    想办法写成一次执行的查询 例如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


    亲测完美解决

  • 上一篇:

    下一篇: