为什么不能一次执行多条sql语句?

Phzzy 2005-10-15 09:06:38
$sql = "
INSERT INTO `".$dbprefix."user` VALUES ('','".$adminname."','".$adminpassword."','".$adminemail."','','','".$admineregtime."','999');
INSERT INTO `".$dbprefix."user` VALUES ('','".$adminname."','".$adminpassword."','".$adminemail."','','','".$admineregtime."','999');
INSERT INTO `".$dbprefix."user` VALUES ('','".$adminname."','".$adminpassword."','".$adminemail."','','','".$admineregtime."','999');
";
$conn = mysql_connect($dbhost,$dbuser,$dbpass1word) or die("Could not connect to MySQL Server in $dbhost");
mysql_select_db($dbname) or die("Could not connect to Database $db");
$result = mysql_query($sql);

如果把$sql改成一条就是对的了
改成一条以上就不行...这是怎么回事啊?
我上网查过..是在每条后面加分号啊...但我加了没用....
...全文
1385 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Phzzy 2005-10-17
  • 打赏
  • 举报
回复
晕倒...
谢谢大家~~
  • 打赏
  • 举报
回复
同意唠叨老大!
mysql不允许同时执行多条语句,这是为了安全考虑。

我简单描述一下:
假设你的代码是这样的
//show.php
$sql = "select * from table1 where id = $id";
$result = mysql_query($sql);

这是很正常的代码吧,你的id变量是这样提交的:

http://xxx.com/show.php?id=10

那么上面的代码就是这样的

$sql = "select * from table1 where id = 10";
$result = mysql_query($sql);

好,当我是黑客的时候,那么我把GET数据改一下:

http://xxx.com/show.php?id=10;delete from table1

那么我们的代码变成了:

$sql = "select * from table1 where id = 10; delete from table";
$result = mysql_query($sql);

嘿嘿,如果mysql能够执行多条语句的话,你看看后果是什么?我们的数据全部没有了!!!

所以嘛,mysql的考虑是很安全的,虽然很多时候不方便,你上面的代码可以使用数组,或者自己多写几条语句来构造嘛。
xuzuning 2005-10-17
  • 打赏
  • 举报
回复
不是有很多人都在关心“SQL注入攻击”吗?
php不允许多行sql指令的存在,就是防范措施之一
helloyou0 2005-10-17
  • 打赏
  • 举报
回复
那个是不行的
hzbigdog 2005-10-16
  • 打赏
  • 举报
回复
你这个问题我碰到过!你的MySQL版本不够
你装一个4.0的MySQL或更高的版本你也可以看看这个文章
http://www.ddvip.net/database/mysql/index1/23.htm
Phzzy 2005-10-16
  • 打赏
  • 举报
回复
我本地的MYSQL版本是
MySQL 4.0.20a-nt PHP4,
还有我空间的版本也是PHP4..所以不能用mysqli_multi_queryl了
也分号格开也不行

但还是不行...我看了你说的那篇文章了...还是不行..呵呵~~

如果实在不行我就用数组循环得了~
Phzzy 2005-10-16
  • 打赏
  • 举报
回复
我在网上查了一些
说是可以直接用分号把sql语句分开然后执行........
但自己试了N久没成功
Phzzy 2005-10-16
  • 打赏
  • 举报
回复
我在PHPMYADMIN里面试了几次了
都是好的~~~~
但直接执行就不行~~~郁闷~~~~
aiiiq 2005-10-16
  • 打赏
  • 举报
回复
echo $sql;

sql语句在phpmyadmin中调试成功,然后放在php中就好了。
helloyou0 2005-10-16
  • 打赏
  • 举报
回复
mysqli_multi_query可以(for php5 )

看这边:
http://www.php.net/manual/en/function.mysqli-multi-query.php
zhongjihang 2005-10-15
  • 打赏
  • 举报
回复
把sql语句放在一个数组里
然后用循环执行

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧