zoukankan      html  css  js  c++  java
  • php mysqli

    1、基本操作

    <?php
    //支持预处理、支持事务
    
    //检测拓展是否已经加载
    // var_dump(extension_loaded('mysqli'));
    //检测函数是否已经存在
    // var_dump(function_exists('mysqli_connect'));
    //得到已经开启的拓展
    // print_r(get_loaded_extensions());
    
    /********步骤:
    1、建立到mysql的连接
    2、打开指定的数据库
    3、设置默认客户端的字符集
    4、执行sql查询
    5、释放结果集
    6、关闭连接
    ********/
    // 1、建立到mysql的连接
    $mysqli = new mysqli('localhost','root','123456');
    if($mysqli->connect_errno){
        die("连接错误:".$mysqli->connect_error);
    } 
    //2、打开指定的数据库
    $mysqli->select_db('test');
    //3、设置默认客户端的字符集
    $mysqli->set_charset('utf8');
    //4、执行sql查询
    $sql = <<<EOF
        select * from test;
    EOF;
    $res = $mysqli->query($sql);//query执行一条语句
    //多结果集
    //more_results()检查是否有更多的结果集
    //next_result()将结果集指针向下移动一位
    // $res = $mysqli->multi_query($sql);//执行多条或一条
    // if($mysqli->multi_query($sql)){
    //     do{
    //         if($res = $mysqli->store_result()){//获取结果集
    //             $rows[] = $res->fetch_all(MYSQLI_ASSOC);
    //         }
    //     }while($mysqli->more_results() && $mysqli->next_result());//检查下一个结果集,并移动指针
    // }else{
    //     echo $mysqli->error;
    // }
    //5、释放结果集
    if($res){
        if($mysqli->num_rows>0){
            $rows = $res->fetch_all();//所有数据,索引数组
            $rows = $res->fetch_all(MYSQLI_NUM);//同上
            $rows = $res->fetch_all(MYSQLI_ASSOC);//关联数组,带字段
            $rows = $res->fetch_all(MYSQLI_BOTH);//索引数组和关联数组
            
            $row = $res->fetch_row();//第一条数据,一维,索引
            $row = $res->fetch_assoc();//取得结果集中的一条记录作为关联数组返回
            
            $res->free();//释放一个与结果集相关的内存
        }
        //得到上条语句影响记录数。
        //受影响记录的条数
        //返回-1.代表sql语句有问题
        //返回0,代表没有受影响记录的条数
        echo '有'.$mysqli->affected_rows.'记录被影响';
    }else{
        //
        echo "执行sql语句错误".$mysqli->errno.':'.$mysqli->error;
    }
    //6、关闭连接
    $mysqli->close();
    ?>

    2、预处理

    <?php
    //预处理
    //含有占位符的sql语句被直接发送至数据库引擎,数据库引擎执行编译等准备工作后确定sql语句,
    //随后绑定值也被发送至数据库引擎,数据库引擎将收到的值填充进sql语句后将其执行
    $mysqli = new mysqli('localhost','root','123456','test');
    $mysqli->set_charset('utf8');
    $sql = "insert user(id,firstname,lastname,sex) values(?,?,?,?)";
    //准备预处理语句
    $mysqli_stmt = $mysqli->prepare($sql);
    // print_r($mysqli_stmt);
    //绑定参数 i - integer(整型) d - double(双精度浮点型) s - string(字符串) b - BLOB(布尔值)
    $id = 5;
    $firstname = 'wang';
    $lastname = 'wan';
    $sex = 2;
    $mysqli_stmt->bind_param('issi',$id,$firstname,$lastname,$sex);
    //执行预处理语句
    if($mysqli_stmt->execute()){
        echo $mysqli_stmt->insert_id;
    }else{
        $mysqli_stmt->error;
    }
    ?>

    3、事务

    <?php
    //事务
    $mysqli = new mysqli('localhost','root','123456','test');
    $mysqli->set_charset('utf8');
    $mysqli->autocommit(false);
    $sql = "update account set money=money-100 where user='xiaoming'";
    $res = $mysqli->query($sql);
    $res_affect = $mysqli->affected_rows;
    
    $sql2 = "update account set money=money+100 where user='xiaohua'";
    $res2 = $mysqli->query($sql);
    $res_affect2 = $mysqli->affected_rows;
    if($res && $res_affect && $res2 && $res_affect2){
        $mysqli->commit();
        echo "转账成功";
        $mysqli->autocommit(ture);
    }else{
        $mysqli->rollback();
        echo "转账失败";
    }
    $mysqli->close();
    ?>
  • 相关阅读:
    使用repeater tableb绑定数据库
    运用js脚本实现table自动添加、删除行
    asp.net ListBox单选、全选、清除等功能
    .net 使用webservice 技术的测试案例
    使用.Net三层架构实现Gridview增、删、改功能
    使用用户控件AspNetPager+Gridview实现分页功能
    silverlight+wcf+linq to sql访问数据
    javascript实现乘法表(本人是菜鸟)
    oracle创建主键自增字段
    C#作Windows服务获取运行目录的方法
  • 原文地址:https://www.cnblogs.com/natian-ws/p/8503489.html
Copyright © 2011-2022 走看看