Heim > Artikel > Backend-Entwicklung > mysql怎么一次执行多条SQL语句?
$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 "
我的本意是用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
亲测完美解决