PHP执行批量mysql语句
2012-11-06 15:23
176 查看
当有多条mysql语句连起来需要执行,比如
$sqls= “insert table a values(1,2); insert table a values(2,3);”
需要执行的话php中可以使用的方法有三个:
mysql_query
pdo
mysqli
三种方法当sqls语句没有问题的时候都是可以的。
但是
第一条sql正确,第二条sql错误:mysql_query、pdo、 mysqli:query也是返回true。所以这个时候你是没法判断你的sqls是否有那条语句是错误的。
解决这种办法有几个招:
下面是第三种方法的示例代码
代码如下:
这样的话当sqls语句中任意一条有错误的话,程序就会跳出这个错误。
如果你要编写初始化mysql的脚本的话,这招就非常好用了。
$sqls= “insert table a values(1,2); insert table a values(2,3);”
需要执行的话php中可以使用的方法有三个:
mysql_query
pdo
mysqli
三种方法当sqls语句没有问题的时候都是可以的。
但是
当sql语句是错误的时候会出现问题
第一条sql错误:三个方法都返回false第一条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 "\r\n"; break; } } $mysqli->close();
这样的话当sqls语句中任意一条有错误的话,程序就会跳出这个错误。
如果你要编写初始化mysql的脚本的话,这招就非常好用了。
相关文章推荐
- PHP执行批量mysql语句的解决方法
- PHP执行批量mysql语句的解决方法
- PHP执行批量mysql语句
- PHP执行批量mysql语句
- php中对MYSQL操作之批量执行,与获取批量结果
- 批量执行Sql语句,MySQL存储过程Java复现
- PHP简单mysql管理工具,支持执行多条mysql语句!
- PHP简单mysql管理工具,支持执行多条mysql语句!
- php+MySQL判断update语句是否执行成功的方法
- php批量生成mysql触发器定义语句
- PHP简单mysql管理工具,支持执行多条mysql语句!
- PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)
- Mysql定时执行任务,执行批量的sql语句 并且查看已经生成的定时事件
- PHP+MySQL多语句执行<转自wooyun>
- PHP+MySQL多语句执行
- PHP MYSQL精确测试SQL语句执行时间
- PHP MYSQL 使用 PDO 连接数据库并执行 SQL 语句
- (转载)PHP怎么获取MySQL执行sql语句的查询时间
- Mysql bench执行sql语句批量操作数据所遇到的问题
- mysql语句的批量执行