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

WBOY
풀어 주다: 2016-06-23 13:46:52
원래의
5056명이 탐색했습니다.

$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


    亲测完美解决

  • 원천:php.cn
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿