程序初始化时创建数据表结构的时候需要批量执行文件中的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