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

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

例如建立几个变量储存了几个建立表的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“来连续执行上边那几个语句的方式?

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个回答  2015-10-21
直接用mysql_query()运行,如果die掉的话应该超过了最大连接时间,在dos下用命令执行试一试
第2个回答  2013-09-22
foreach( $i as $v ){
mysql_query($sql.$i, $con);
}追问

原来就是这样遍历啊

追答

经常翻翻手册吧 ,你会有惊喜的

本回答被提问者采纳
第3个回答  2013-09-22
可以 就把那些sql1----n 全部放在一个字符串里面 然后执行不就可以了吗?追问

你是说就和你后边的那个一样,1——n放到数组里边,然后用foreach遍历么?

追答

为什么 要遍历啦 难道 query就只能执行一条 你试没试过 这种的
$sql1=" CREAT TABLE 't1'(。。。)“;
$sql2=" CREAT TABLE 'T2'(。。。)";
$sql = $sql1.$sql2......
mysql_query($sql,$con);
难道不可以吗》??

追问

竟然还可以这样?!如果可以的话,这个就是我开始时候期望的那种小技巧。
我点了向你提问,在新问题里边给你最佳,聊表寸心。

追答

谢谢

第4个回答  2013-09-22
建表等操作为什么不用sql文件导入?
以下是一个典型的代码片段:
/**
* 创建数据表
* @param resource $db 数据库连接资源
*/
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);
}

}
}追问

额,谢了,这个技术对于咱当前的留言板企划来说过于牛刀了,本来是看看有什么小窍门小变种的。。果然php的变量看着乱的头晕的习惯还没好,不过这里边看到了楼下提到的遍历数组的foreach()的方法,这么说来这类情况最常用的是用foreach遍历是吧。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网