mysqli_query批量执行多句sql语句的方法

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