源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

PHP执行批量mysql语句的解决方法

  • 时间:2020-05-30 17:28 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP执行批量mysql语句的解决方法
当有多条mysql语句连起来需要执行,比如 $sqls= “insert table a values(1,2); insert table a values(2,3);” 需要执行的话php中可以使用的方法有三个: mysql_query pdo mysqli [b]三种方法当sqls语句没有问题的时候都是可以的。[/b] 但是 当sql语句是错误的时候会出现问题 第一条sql错误:三个方法都返回false 第一条sql正确,第二条sql错误:mysql_query、pdo、 mysqli:query也是返回true。所以[b]这个时候你是没法判断你的sqls是否有那条语句是错误的。[/b] 解决这种办法有几个招: [b]1 解析sql语句 [/b]将每条sql都拆分开来执行。这样每个语句分开执行就解决了。但是这种方法多出了好几种方法,所以不可取。 [b]2 将sqls语句保存为文本 [/b]使用cmd执行命令 mysql…. .< sqls.sql, 然后捕获输出。这也是一种方法,但是感觉是绕着问题走,应该还有更好的方法。 [b]3 使用mysqli::multi_query方法 [/b]这个方法可以执行多条sql语句,然后使用mysqli::next_result来设置sql的偏移量,使用mysqli::error获取当前偏移的sql的错误状态 [b]下面是第三种方法的示例代码[/b] 代码如下:
[u]复制代码[/u] 代码如下:
$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 "\r\n";         break;     } } $mysqli->close();
这样的话当sqls语句中任意一条有错误的话,程序就会跳出这个错误。 如果你要编写初始化mysql的脚本的话,这招就非常好用了。  
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部