<?php
$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 "
}
?>
上面返回空记录。
单独将$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
亲测完美解决