批量执行sql语句

  • 基本使用

$sqls="sql语句1;sql语句2;sql语句n";

或 $sqls="insert into xx;";  $sqls.="insert into xx;";

$res=mysqli::multi_query($sqls);

如果$sqls 是dml 语句,则$res 返回布尔值;

如果$sqls 是dql 语句,则$res 返回多个结果集,需要使用mysqli::store_result()

和 mysqli::more_results()    mysqli::next_result() 配合取出各个结果集

  • 批量执行dml语句(insert、update、delete语句可以混合拼接)
 1 <?php
 2     //连接数据库
 3     $mysqli=new MySQLi("localhost","root","root","test");
 4     //判断是否连接成功
 5     if($mysqli->connect_error){
 6         die("连接失败".$mysqli->connect_error);
 7     }
 8     //拼接sql语句,注意-->双引号里的分号不可少!!!
 9     $sqls="insert into user1 (name,password,age,birthday) values (‘wpp‘,md5(‘wpp‘),25,‘1991-05-05‘);";
10     $sqls.="insert into user1 (name,password,age,birthday) values (‘zs‘,md5(‘zs‘),26,‘1990-01-01‘);";
11     $sqls.="insert into user1 (name,password,age,birthday) values (‘ls‘,md5(‘ls‘),26,‘1990-02-01‘);";
12     //批量执行dml语句
13     $res=$mysqli->multi_query($sqls);
14     //判断执行结果
15     if(!$res){
16         echo "操作失败";
17     }else{
18         echo "操作成功";
19     }
20     //关闭连接
21     $mysqli->close();
22 ?>
  • 查询user1 表的结构和表的内容并显示
 1 <?php
 2     //连接数据库
 3     $mysqli=new MySQLi("localhost","root","root","test");
 4     //判断是否连接成功
 5     if($mysqli->connect_error){
 6         die("连接失败".$mysqli->connect_error);
 7     }
 8     //拼接sql语句,注意-->双引号里的分号不可少!!!
 9     $sqls="desc user1;";
10     $sqls.="select * from user1";
11     //批量执行dql语句
12     $res=$mysqli->multi_query($sqls) or die("操作失败".$mysqli->error);
13     //处理执行结果
14     do{
15         echo"<br/>-----结果如下-----<br/>";
16         //取出第一个结果集
17         $result=$mysqli->store_result();
18         //显示结果
19         while($row=$result->fetch_row()){
20             foreach($row as $key=>$val){
21                 echo "--".$val;
22             }
23             echo "<br/>";
24         }
25         //及时释放结果集
26         $result->free();
27     }while($mysqli->more_results()&&$mysqli->next_result());
28     //关闭连接
29     $mysqli->close();
30 ?>

结果如下:

  • 查询user1 表的结构和表的内容并用表格显示在网页
 1 <?php
 2     //批量执行sql语句(dql),以表格形式显示在网页
 3     //连接数据库
 4     $mysqli=new MySQLi("localhost","root","root","test");
 5     //判断是否连接成功
 6     if($mysqli->connect_error){
 7         die("连接失败".$mysqli->connect_error);
 8     }
 9     //拼接sql语句,注意-->双引号里的分号不可少!!!
10     $sqls="desc user1;";
11     $sqls.="select * from user1";
12     //批量执行dql语句
13     $res=$mysqli->multi_query($sqls) or die("操作失败".$mysqli->error);
14     //处理执行结果
15     do{
16         echo"<br/>-----结果如下-----<br/>";
17         //取出第一个结果集
18         $result=$mysqli->store_result();
19         echo "<table border=1 cellspacing=0 cellpadding=3px><tr>";
20         //显示表头和表的第一行内容
21         $fieldName=$result->fetch_assoc();
22         foreach($fieldName as $key=>$val){
23             echo "<th>$key</th>";
24         }
25         echo "</tr><tr>";
26         foreach($fieldName as $key=>$val){
27             echo "<td>$val</td>";
28         }
29         echo "</tr>";
30         //显示表的第二行以后的内容
31         while($row=$result->fetch_row()){
32             echo "<tr>";
33             foreach($row as $key=>$val){
34                 echo "<td>$val</td>";
35             }
36             echo "</tr>";
37         }
38         echo "</table>";
39         //及时释放结果集
40         $result->free();
41     }while($mysqli->more_results()&&$mysqli->next_result());
42     //关闭连接
43     $mysqli->close();
44 ?>

结果如下:

时间: 2024-11-05 15:11:18

批量执行sql语句的相关文章

SQL*PLUS中批量执行SQL语句

SQL*PLUS中批量执行SQL语句 今天由于工作的需要,要在CMD中批量执行大量的SQL语句,对于Oracle学习还处在入门阶段的我,只能硬着头皮到处去寻找资料(主要是网络资料,也包括自己的电子书),最后将所有的SQL语句一次性的执行完成. 首先,将要执行的所有的SQL语句,全部写入某个sql文件当中.例如f:\test.sql; 然后,通过通过sqlplus连接到数据库:如: SQL> sqlplus test/[email protected]; 再执行如下命令: SQL> @f:\te

mysqli扩展库应用---批量执行sql语句

1, mysqli批量执行sql语句.基本语法: $sqls=”sql1;sql2;………” mysqli::multi_query($sqls); 同一个$sqls要么是增删改语句集合,要么是查询语句的集合,查询语句和增删改最好不要混合.应用示例如下: ① 操作数据库的代码: <?php class mysqliMutiTool{ private $mysqli = null; private static $host = "10.252.158.217"; private s

JDBC连接MYSQL,批量执行SQL语句或在执行一个SQL语句之前执行一个SQL语句

conn = MysqlJdbcUtils.getConnection(); Statement ps=conn.createStatement(); ps.addBatch("truncate QB_ShowCount_Asite_copy"); ps.executeBatch(); String SrcSql = "select convert(unhex(hex(convert(Community using latin1))) using utf8) as Commu

ThinkPHP3.2.3批量执行sql语句(带事务)

/*** 事务封装方法* @access public 将此方法放入框架model.class.php中* @param array $sqls 要执行的sql数组或语句* @param array $vals sql语句中要替换的值* @return boolean*/public function transExecuteSql($sqls){ $this->startTrans(); if(is_array($sqls)){foreach($sqls as $k => $sql){ $r

批量执行SQL语句,进行删除,插入或者更改。

private bool ExecuteTransaction(List<string> list) { using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["LocalConnectionString"].ToString())) { SqlCommand command = new SqlCommand(); S

向Oracle中传入数组,批量执行SQL语句

1.首先用PL/SQL创建package 1 create or replace package excuteBatchOperate 2 as 3 type sqlStr_Array is table of varchar2(1000) index by binary_integer; 4 procedure excuteBulkData(sqlStr in sqlStr_Array); 5 end excuteBatchOperate; 2.在packagebody内创建存储过程 1 cre

mysql工具Navicat批量执行SQL语句

例如:我现在要同时执行这么多语句 update community set xqmc=replace(xqmc,' ',''); update community set xqbm=replace(xqbm,' ',''); update community set dkxx=replace(dkxx,' ',''); update community set ssqy=replace(ssqy,' ',''); update community set ssjd=replace(ssjd,'

MySQL中批量执行SQL语句

DROP DATABASE IF EXISTS databaseWeb; -- 如果存在,则删除模式 databaseWebCREATE DATABASE databaseWeb CHARACTER SET utf8; -- 创建模式 databaseWeb.使用 utf8 编码 USE databaseWeb; -- 切换到模式 databaseWeb,以下操作均在 databaseWeb 下 set NAMES 'utf8'; -- 控制台使用 utf8 编码,若使用gbk编码则会使插入中文

jdbc批量执行SQL insert 操作

package com.file; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; public class ResolvFile { public static String readFileContent(String filepath) { //1.读取每一行记录,保存到List中 ArrayList<String> records = new ArrayList&