程序初始化时创建数据表结构的时候需要批量执行文件中的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).'<br>';
}
完整示例:
<?php
header('Content-type:text/html;charset=utf-8');
$conn=mysqli_connect('localhost','root','root','test');
if (mysqli_connect_errno($conn))
echo "连接 MySQL 失败: " . mysqli_connect_error();
else echo "连接 MySQL 成功".'<br>';
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).'<br>';
$flag=false;
}
else echo "查询成功".'<br>';
}
if($flag)
echo "恭喜*数据库创建成功";
else
echo "抱歉*数据库创建失败(有错误)";
mysqli_close($conn);
?>
参考:https://blog.csdn.net/bai9474500755/article/details/51059447
目前评论:0