mysqli数据库编程—批量执行

dml批量操作

//1.创建对象 连接数据库 选择数据库
$conn = new mysqli('localhost', 'root', '', 'test');
if ($conn->connect_errno) {
    die('连接失败' . $conn->connect_error);
}

//2.设置编码
$conn->query('set names utf8');

//3.操作数据(批量dml)
$sql = "insert into user(id,name,password,email,age) values(7,'小韩',md5(12345),'xh@qq.com',25);";
$sql .= "insert into user(id,name,password,email,age) values(8,'小孙',md5(12345),'xs@qq.com',25);";
$sql .= "update user set age=18 where id=7;";
$sql .= "delete from user where id=8";

//这个函数就是query()的增强版,可以同时操作多条语句
//dql和dml操作返回值都是 bool,如果第一个操作失败则返回false,第一条语句成功,后面的失败也会返回true
$res = $conn->multi_query($sql);

if (!$res){
    echo '操作失败';
}else{

    echo '操作成功,操作了'.$conn->affected_rows.'条数据';
}

//5.关闭连接
$conn->close();

dql批量操作

//1.创建对象 连接数据库 选择数据库
$conn = new mysqli('localhost', 'root', '', 'test');
if ($conn->connect_errno) {
    die('连接失败' . $conn->connect_error);
}

//2.设置编码
$conn->query('set names utf8');

//3.操作数据(批量dql)
$sql = "desc user;";
$sql .= "select * from user";

//mysqli_multi_query()函数执行多个sql语句(dql)
//mysqli_multi_query()函数的dql和dml操作返回值都是 bool,返回的bool值仅与第一条sql语句有关
if ($conn->multi_query($sql)){
    do{
        //存储第一个结果集(mysqli_multi_query为真则至少有一个结果集)
        //返回值为 结果集 或 false(只要查询不产生结果集就返回false)
        if ($res=$conn->store_result()){
            while ($row = $res->fetch_row()){
                foreach ($row as $k=>$v){
                    echo "$v--";
                }
                echo '<br>';
            }
            $res->free();
        }
        //mysqli_more_results() 函数检查一个多查询是否有更多的结果
        //该函数用来弥补mysqli_next_result()的功能缺陷
        //成功则返回 TRUE,失败则返回 FALSE
        if (!$conn->more_results()){
            break;
        }
        echo '****新的结果集****<br>';

    //mysqli_next_result() 函数为 mysqli_multi_query() 准备下一个结果集
    //成功则返回 TRUE,如果失败则返回 FALSE
    }while($conn->next_result());
}

函数详解

mysqli_multi_query()

mysqli_multi_query(connection,query) 返回值 BOOL
mysqli_multi_query()函数执行一个或多个针对数据库的查询。多个查询用分号进行分隔
mysqli_multi_query()函数的dql和dml操作返回值都是 bool,返回的bool值仅与第一条sql语句有关

mysqli_store_result()

mysqli_store_result() 存储第一个结果集
mysqli_store_result(connection) 返回值为 结果集 或 BOOL
如果上一查询并不产生结果集(例如,执行了一个 INSERT 语句),那么mysqli_store_result()会返回 FALSE
如果读取结果集失败了,也会返回 FALSE

mysqli_next_result()

mysqli_next_result()为读取下一个结果集做准备(下移mysqli_next_result()的指针)
mysqli_next_result(connection) 返回值为 BOOL
mysqli_multi_query() 函数执行之后,为读取下一个结果集做准备,然后可以使用 mysqli_store_result() 函数读取下一个结果集

mysqli_more_results()

mysqli_more_results(connection) 返回值 BOOL
mysqli_more_results() 函数检查一个多查询是否有更多的结果
该函数用来弥补mysqli_next_result()的功能缺陷
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值