php学习笔记(十九)mysqli扩展库的多语句查询、事物处理以及字符集设置

<?php
    /**
     * 处理数据库的扩展库
     *
     *     1.执行多条查询语句
     *         多语句查询:        $mysqli->multi_query($sqls)
     *         开始获取结果集:    $mysqli->store_result()
     *         判断是否还存在结果集:$mysqli->more_results()
     *         指针移到到下一个结果集:$mysqli->next_result()
     *         
     *     2.事物处理
     *         目前只有INNODB和BDB两种存储引擎支持事物
     *         默认是:myisam。
     *
     *         所以在建表的时候要指定innodB;在创建语句后加入type = 'INNODB'
     *         而且默认自动提交(导致插入数据不能回滚的)
     *         关闭自动提交:set autocomment = 0;
     *         并要开启事物:START TRANSACTION;
     *         回滚:rollback
     *     
     *     3.设置字符集
     *         在sql语句上
     *         $mysqli->query("set names gb2312");
     *         $mysqli->set_charset("utf8");
     *
     */

//使用面向对象的方式:
$mysqli = new mysqli("localhost","root","root","hibernate");
if (mysqli_connect_errno()){
    echo "连接失败:".mysqli_connect_error();
    $mysqli = null;
    exit();
}
//var_dump($mysqli);
//查看字符集
//echo $mysqli->character_set_name();

//没有结果集的insert update delete
$sqls = "insert into users values(27,'wodm a ','45');"
        ."update users set name = 'devil' where id >12;";
//有结果集的select
$sqls = "select * from users where id < 10;"
        ."select * from tb_company;";
if ($mysqli->multi_query($sqls)){
    echo "执行成功".$mysqli->affected_rows.$mysqli->insert_id."<br>";
    do{
        $result = $mysqli->store_result();
        while ($row = $result->fetch_assoc()){
            foreach ($row as $cal){
                echo $cal."      ";
            }
            echo "<br>";
        }
        //指向第二个结果集
    }while ($mysqli->more_results()?$mysqli->next_result():FALSE);
}else {
    echo $mysqli->errno."--".$mysqli->error;
}


//创建表
$createsql = "CREATE TABLE admins(id int not null auto_increment,name varchar(50) not null default '',price double not null default '0.00',primary key (id)) type = 'INNODB'";
$mysqli->query($createsql);

$sql = "update users set name='sjdkfjslkfjs' where id < 5";
//设置自动提交为假
$mysqli->autocommit(0);

$error = true;
$result = $mysqli->query($sql);
if ($result) {
    echo "更新成功";
}else{
    $error = false;
}
if ($error){
    echo "成功提交";
    $mysqli->commit();
}else{
    echo "失败回滚";
    $mysqli->rollback();
}

//设置字符集(gb2312插入utf8查询,就会出现乱码了)
//与下个set names 一样的效果
//$mysqli->set_charset("utf8");
//$mysqli->query("set names gb2312");
//$inser = "insert into users values(30,'张三',23);";
//$mysqli->query($inser);
//$mysqli->commit();
//设置字符集
$mysqli->query("set names utf-8");
$sql = "select * from users where id =30;";
$result = $mysqli->query($sql);
//循环输出数据
while ($row = mysqli_fetch_row($result)){
    foreach ($row as $cal){
        echo $cal."      ";
    }
    echo "<br>";
}

//释放结果集
//$result->close();
$mysqli->close();
?>

源码下载: php教程学习笔记
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值