php函数mysql_query批量执行多句sql语句

正常情况下用php的mysql_query函数是不能批量执行多句CREATE TABLE之类的语句的;

而有些场景;比如说有一个sql备份文件、又或是程序初始化时创建数据表结构的时候需要批量执行文件中的sql语句;

解决这个问题可以用explode函数按‘;‘号把sql语句拆成数组;再通过循环执行mysql_query即可;因为每句sql都是以‘;‘号结束的;

但是考虑到sql语句中可能有实体符号  之类的;如果按‘;‘号来拆;容易误伤;所以用preg_split正则来拆更靠谱;

示例环境:

sql文件:./thinkbjy.sql

        $sql_array=preg_split("/;[\r\n]+/", file_get_contents(‘./thinkbjy.sql‘));        foreach ($sql_array as $k => $v) {           mysql_query($v,$link);           echo mysql_error().‘<br>‘;        }

执行 echo mysql_error().‘<br>‘;用来查看是否有错误;

时间: 2024-10-08 10:27:43

php函数mysql_query批量执行多句sql语句的相关文章

使用ODP.NET一次执行多句SQL语句

在实际开发的时候有的时候希望一次执行多句SQL语句,又不想使用Transcation的话,可以直接将多句SQL语句拼接起来.例如: var sql = "Begin " + "Update tabUser Set UserName = :UserName Where UserId = :UserId; " + "Update tabUser Set UserPassword = :UserPassword Where UserId = :UserId An

事务应用-执行多条SQL语句

事务具有原子性,要么不执行,要么全执行,一旦成功执行永久保存.而这些正是由于事务的原子性和对数据库的持久性形成的.以下是一个关于统一给数据库中的数据修改的批量操作,利用到事务. TODO:批量修改数据库中的数据 CODE: #region ExtensionMethod /// <summary> /// 根据学号来给指定的学生加分-陈方林-2014年3月22日15:17:59 /// </summary> /// <param name="strStudentNo

一句SQL语句,可能就是一个定时炸弹

一句小小的SQL语句,在数据量很小的时候,可能是一句相当完美的语句.但是随着数据量的不断增加,你是否能想到他带来的灾难性的后果呢?那么,什么样的SQL语句才算好的语句呢? 对于SQL语句,很多人上来就是select *,不用想,对于数据量大的表来说,这样的语句无非是致命的.而一个好的数据库管理员,在设计数据库时,就应该想到当数据量很大很大时,就应当有所准备. 最近在做一个查询统计, 因为一直用本机的数据库,数据量不是很大,即使查询时等1s也没什么感觉,但是当连接到真正的数据库上,那等待的感觉,只

java执行多条SQL语句

一次执行多条SQL的技术要点如下: DatabaseMetaData接口是描述有关数据库的整体综合信息,由于DatabaseMetaData是接口,所以没有构造方法,故不能使用new来创建DatabaseMetaData对象,但是可以通过Connection的getMetaData()方法创建.例如:DatabaseMetaData md=con.getMetaData(). DatabaseMetaData类的supportsBatchUpdates方法用于判断此数据库是否支持批量更新.其返回

MyBatis一次执行多条SQL语句

MyBatis一次执行多条SQL语句 有个常见的场景:删除用户的时候需要先删除用户的外键关联数据,否则会触发规则报错. 解决办法不外乎有三个:1.多条sql分批执行:2.存储过程或函数调用:3.sql批量执行. 今天我要说的是MyBatis中如何一次执行多条语句(使用mysql数据库). 1.修改数据库连接参数加上allowMultiQueries=true,如: hikariConfig.security.jdbcUrl=jdbc:mysql://xx.xx.xx:3306/xxxxx?cha

mysql -- 一次执行多条sql语句

最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.sql里的所有sql语句,这就涉及到执行多条语句的问题了.软件在CodeIgniter框架上开发的,CodeIgniter有封装好的执行sql语句的函数:$this->db->query('****'),但此函数一次只能执行一条sql语句.所以得另外想办法了.百度了下,找到了一些资料.multi_q

select count(1) from table where ..这句sql语句的作用

作用是计算一共有多少符合条件的行.1并不是表示第一个字段,而是表示一个固定值,count(1)和count(2)效果是一样的 count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些.count(字段值),将返回符合条件的非空数量 1.查询所有数据,列出7列数据 2.使用count(1)查询结果,返回7 3.使用count(*)查询结果,返回7 4.括号中是表中的字段值,count(字段值),返回表中非空的C_Id字段下的数据数量

利用pl/sql执行计划评估SQL语句的性能简析

一段SQL代码写好以后,可以通过查看SQL的执行计划,初步预测该SQL在运行时的性能好坏,尤其是在发现某个SQL语句的效率较差时,我们可以通过查看执行计划,分析出该SQL代码的问题所在. 那么,作为开发人员,怎么样比较简单的利用执行计划评估SQL语句的性能呢?总结如下步骤供大家参考: 1. 打开熟悉的查看工具:PL/SQL Developer. 在PL/SQL Developer中写好一段SQL代码后,按F5,PL/SQL Developer会自动打开执行计划窗口,显示该SQL的执行计划. 2.

执行多条SQL语句,实现数据库事务。(Oracle数据库)

/// <summary> /// 执行多条SQL语句,实现数据库事务. /// </summary> /// <param name="SQLStringList">(key为sql语句,value是该语句的OracleParameter[])</param> /// <returns></returns> public static bool ExecuteSqlTran(Dictionary<strin