php批量执行sql语句怎么写?
mip版 关注:65 答案:5 悬赏:70
解决时间 2021-01-22 14:51
已解决
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“来连续执行上边那几个语句的方式?
最佳答案
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语句就被批量的执行了。
全部回答
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);
}
}
}
2楼
2021-01-22 06:31
可以 就把那些sql1----n 全部放在一个字符串里面 然后执行不就可以了吗?
3楼
2021-01-22 06:14
直接用mysql_query()运行,如果die掉的话应该超过了最大连接时间,在dos下用命令执行试一试
4楼
2021-01-22 05:27
foreach( $i as $v ){
mysql_query($sql.$i, $con);
}
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上信息!
推荐资讯
大家都在看