php执行循环sql语句,php批量执行sql语句怎么写?

php批量执行sql语句怎么写?

mip版  关注:65  答案:5  悬赏:70

解决时间 2021-01-22 14:51

1e8176a0f6f9b78caa2d719bc91d768f.png

已解决

2021-01-22 04:04

如题,建了个空间,先从留言板玩起,有这样一个问题。

例如建立几个变量储存了几个建立表的sql语句:

mysql_select_db("base", $con);

$sql1=" CREAT TABLE 't1'(。。。)“;

$sql2=" CREAT TABLE 'T2'(。。。)";

$spln=。。。

然后运行他们,首先当然可以这样写:

mysql_query($sql1,$con);

mysql_query($sql2,$con);

====

那么,难道我必须一遍遍的重复执行mysql_query()这个函数么?

有没有不用循环语句,可以让我只打一遍”mysql_query“来连续执行上边那几个语句的方式?

最佳答案

9903cec2a59b5752466c4a3b9e7f72bd.png

2021-01-22 04:12

php中利用数组用Mysql_query批量执行SQL语句。

参考示例如下:

思路:这里采用一个数组.用explode 函数,将$query语句按照”;”炸开,然后循环执行即可:

$query = 'delete from ecs_goods_attr where attr_id=11 and goods_id=22;

Insert into ecs_goods_attr (goods_attr_id,goods_id,attr_id,attr_value,attr_price)values(Null,33,138,"胆略",0);

update ecs_goods set goods_number=10,shop_price=55 where goods_id=33;'

$query_e = explode(';','$query');

foreach ($query_e as $k =>$v)

{

mysql_query($query_e[$k]);

}

这样 $query语句就被批量的执行了。

全部回答

04d41b71d286c6d0c63b4cdc921441a2.png

1楼

2021-01-22 07:44

建表等操作为什么不用sql文件导入?

以下是一个典型的代码片段:

function create_tables($db, $prefix = ''){

//读取SQL文件

$sql = file_get_contents(MODULE_PATH . 'Data/install.sql');

$sql = str_replace("\r", "\n", $sql);

$sql = explode(";\n", $sql);

//替换表前缀

$orginal = C('ORIGINAL_TABLE_PREFIX');

$sql = str_replace(" `{$orginal}", " `{$prefix}", $sql);

//开始安装

show_msg('开始安装数据库...');

foreach ($sql as $value) {

$value = trim($value);

if(empty($value)) continue;

if(substr($value, 0, 12) == 'CREATE TABLE') {

$name = preg_replace("/^CREATE TABLE `(\w+)` .*/s", "\\1", $value);

$msg = "创建数据表{$name}";

if(false !== $db->execute($value)){

show_msg($msg . '...成功');

} else {

show_msg($msg . '...失败!', 'error');

session('error', true);

}

} else {

$db->execute($value);

}

}

}

a39670c86bd8426c4c83a264c98dbab9.png

2楼

2021-01-22 06:31

可以 就把那些sql1----n 全部放在一个字符串里面 然后执行不就可以了吗?

ffc5ed01a8b8f3a7f5186a9d9c2eddd5.png

3楼

2021-01-22 06:14

直接用mysql_query()运行,如果die掉的话应该超过了最大连接时间,在dos下用命令执行试一试

5c55c89470671101c8434088f4c59c7f.png

4楼

2021-01-22 05:27

foreach( $i as $v ){

mysql_query($sql.$i, $con);

}

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

点此我要举报以上信息!

推荐资讯

大家都在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值