程序初始化时创建数据表结构的时候需要批量执行文件中的sql语句,但是mysqli_query不支持批量执行多语句。
解决这个问题可以用preg_split正则来按';'号把sql语句拆成数组;再通过循环执行mysqli_query即可;因为每句sql都是以';'号结束的;
主要代码:
$sql_array=preg_split("/;[\r\n] /", $sql);
foreach ($sql_array as $k => $v) {
mysqli_query($conn,$v);
echo mysql_error($conn).'
';
}
完整示例:
';
mysqli_query($conn,'set names utf8');
$sql="drop table if exists `www`;
create table `www` (
`id` int(11) not null auto_increment,
`username` varchar(50) default null,
`password` varchar(50) default null,
`sex` varchar(255) default null,
primary key (`id`)
) engine=myisam auto_increment=32 default charset=utf8;
insert into `www` values (1,'20154071101','123','男'),(2,'20154071102','123','男'),(3,'20154071103','123','男');";
$sql_array=preg_split("/;[\r\n] /", $sql);
$flag=true;
foreach ($sql_array as $k => $v) {
mysqli_query($conn,$v);
if(mysqli_error($conn)){//出错
echo mysqli_error($conn).'
';
$flag=false;
}
else echo "查询成功".'
';
}
if($flag)
echo "恭喜*数据库创建成功";
else
echo "抱歉*数据库创建失败(有错误)";
mysqli_close($conn);
?>
参考:
目前评论:0