PHP执行批量mysql语句的解决方法
发布时间:2020-12-13 06:16:41 所属栏目:PHP教程 来源:网络整理
导读:当有多条mysql语句连起来需要执行,比如 $sqls= “insert table a values(1,2); insert table a values(2,3);” 需要执行的话php中可以使用的方法有三个: mysql_query pdo mysqli 三种方法 但是 当sql语句是错误的时候会出现问题 第一条sql错误:三个方法都
当有多条mysql语句连起来需要执行,比如 $sqls= “insert table a values(1,2); insert table a values(2,3);” 需要执行的话php中可以使用的方法有三个: mysql_query pdo mysqli 三种方法但是 当sql语句是错误的时候会出现问题 第一条sql正确,第二条sql错误:mysql_query、pdo、 mysqli:query也是返回true。所以这个时候你是没法判断你的sqls是否有那条语句是错误的。
1 解析sql语句将每条sql都拆分开来执行。这样每个语句分开执行就解决了。但是这种方法多出了好几种方法,所以不可取。
2 将sqls语句保存为文本使用cmd执行命令 mysql…. .< sqls.sql,然后捕获输出。这也是一种方法,但是感觉是绕着问题走,应该还有更好的方法。
3 使用mysqli::multi_query方法这个方法可以执行多条sql语句,然后使用mysqli::next_result来设置sql的偏移量,使用mysqli::error获取当前偏移的sql的错误状态
下面是第三种方法的示例代码代码如下: 代码如下: $sql = Config::get('sql'); $content = file_get_contents($sql); $config = Config::get('config') $mysqli = mysqli_connect($config['host'],$config['user'],$config['password'],$config['dbname']); $ret = $mysqli->multi_query($content); if($ret === false) { echo mysqli_error($mysqli); } while (mysqli_more_results($mysqli)) { if (mysqli_next_result($mysqli) === false) { echo mysqli_error($mysqli); echo "rn"; break; } } $mysqli->close(); 这样的话当sqls语句中任意一条有错误的话,程序就会跳出这个错误。 如果你要编写初始化mysql的脚本的话,这招就非常好用了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |