php批量执行sql语句怎么写?
如题,建了个空间,先从留言板玩起,有这样一个问题。例如建立几个变量储存了几个建立表的sql语句:mysql_select_db("base",$con);$sql1="C...
如题,建了个空间,先从留言板玩起,有这样一个问题。
例如建立几个变量储存了几个建立表的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“来连续执行上边那几个语句的方式? 展开
例如建立几个变量储存了几个建立表的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“来连续执行上边那几个语句的方式? 展开
5个回答
2015-12-11 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
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语句就被批量的执行了。
参考示例如下:
思路:这里采用一个数组.用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语句就被批量的执行了。
展开全部
直接用mysql_query()运行,如果die掉的话应该超过了最大连接时间,在dos下用命令执行试一试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
foreach( $i as $v ){
mysql_query($sql.$i, $con);
}
mysql_query($sql.$i, $con);
}
追问
原来就是这样遍历啊
追答
经常翻翻手册吧 ,你会有惊喜的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以 就把那些sql1----n 全部放在一个字符串里面 然后执行不就可以了吗?
更多追问追答
追问
你是说就和你后边的那个一样,1——n放到数组里边,然后用foreach遍历么?
追答
为什么 要遍历啦 难道 query就只能执行一条 你试没试过 这种的
$sql1=" CREAT TABLE 't1'(。。。)“;
$sql2=" CREAT TABLE 'T2'(。。。)";
$sql = $sql1.$sql2......
mysql_query($sql,$con);
难道不可以吗》??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建表等操作为什么不用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);
}
}
}
以下是一个典型的代码片段:
/**
* 创建数据表
* @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遍历是吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |