如题,建了个空间,先从留言板玩起,有这样一个问题。
例如建立几个变量储存了几个建立表的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“来连续执行上边那几个语句的方式?
åè示ä¾å¦ä¸ï¼
æè·¯ï¼è¿ééç¨ä¸ä¸ªæ°ç».ç¨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($sql.$i, $con);
}追问
原来就是这样遍历啊
追答经常翻翻手册吧 ,你会有惊喜的
本回答被提问者采纳你是说就和你后边的那个一样,1——n放到数组里边,然后用foreach遍历么?
追答为什么 要遍历啦 难道 query就只能执行一条 你试没试过 这种的
$sql1=" CREAT TABLE 't1'(。。。)“;
$sql2=" CREAT TABLE 'T2'(。。。)";
$sql = $sql1.$sql2......
mysql_query($sql,$con);
难道不可以吗》??
竟然还可以这样?!如果可以的话,这个就是我开始时候期望的那种小技巧。
我点了向你提问,在新问题里边给你最佳,聊表寸心。
谢谢
以下是一个典型的代码片段:
/**
* 创建数据表
* @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遍历是吧。