美文网首页
MySQLi实现CURD(增删改查)基本操作

MySQLi实现CURD(增删改查)基本操作

作者: 似朝朝我心 | 来源:发表于2021-06-07 22:51 被阅读0次

    案例演示准备:首先生成一张student表和规范表的一些字段。

    create table student
    (
        stu_id tinyint unsigned auto_increment not null primary key,
        stu_name varchar(20) not null,
        stu_psd varchar(32) not null,
        stu_age tinyint(3) unsigned default '18'
    );
    

    查看一个表中有哪些字段:



    查看一个表中有哪些字段:



    查看一个表的字段类型信息

    添加记录

    一次插入一条记录

    <?php 
        # 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
        $serverName = "localhost"; 
        $userName = "root";
        $password = "12345678"; 
        $database = "qinfb_school";
        $mysqli = @new mysqli($serverName,$userName,$password,$database);
        if($mysqli -> connect_errno){
            //如果有连接错误,得到错误信息
            die('Connect Error:'.$mysqli -> connect_error);
        }
        # 2.设置默认的客户端编码方式
        $mysqli -> set_charset('utf-8');
        
        # 3.执行SQL预处理查询。
          //生成一张表和一些字段。
          $sql = <<< EOF
          insert student(stu_name,stu_psd) values('钱万','123456');
    EOF;
        
        # 4.只能执行一条sql语句,调用query()方法
        $res = $mysqli -> query($sql);
        if($res){
            //得到上一条插入操作产生的auto_increment的值
            echo '恭喜你,你是第'.$mysqli -> insert_id.'个注册账号的学生!<br/>';
        }else{
            //得到上一步操作产生的错误编号和错误信息
            echo 'error '.$mysqli -> errno.':'.$mysqli -> error;
        }
        # 5.关闭数据库连接
        $mysqli -> close();
    ?>
    


    一次插入多条记录

    <?php 
        # 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
        $serverName = "localhost"; 
        $userName = "root";
        $password = "12345678"; 
        $database = "qinfb_school";
        $mysqli = @new mysqli($serverName,$userName,$password,$database);
        if($mysqli -> connect_errno){
            //如果有连接错误,得到错误信息
            die('Connect Error:'.$mysqli -> connect_error);
        }
        # 2.设置默认的客户端编码方式
        $mysqli -> set_charset('utf-8');
        
        # 3.执行SQL预处理查询。
          
          $sql = <<< EOF
          insert student(stu_name,stu_psd) 
          values('钱万2','123456'),('钱万3','123456'),('钱万4','123456');
    EOF;
        
        # 4.只能执行一条sql语句,调用query()方法
        $res = $mysqli -> query($sql);
        if($res){
            //得到上一条插入操作产生的auto_increment的值
            echo '恭喜你,你是第'.$mysqli -> insert_id.'个注册账号的学生!<br/>';
        }else{
            //得到上一步操作产生的错误编号和错误信息
            echo 'error '.$mysqli -> errno.':'.$mysqli -> error;
        }
        # 5.关闭数据库连接
        $mysqli -> close();
    ?>
    

    代码里面的sql插入语句还可以写成双引号的形式:
    <?php 
        # 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
        $serverName = "localhost"; 
        $userName = "root";
        $password = "12345678"; 
        $database = "qinfb_school";
        $mysqli = @new mysqli($serverName,$userName,$password,$database);
        if($mysqli -> connect_errno){
            //如果有连接错误,得到错误信息
            die('Connect Error:'.$mysqli -> connect_error);
        }
        # 2.设置默认的客户端编码方式
        $mysqli -> set_charset('utf-8');
        
        # 3.执行SQL预处理查询。
        
          $sql = <<< EOF
          insert student(stu_name,stu_psd) 
          values('钱万2','123456'),('钱万3','123456'),('钱万4','123456');
    EOF;
          
          $sql1 = "insert student(stu_name,stu_psd) 
          values('钱万5','123456'),('钱万6','123456'),('钱万8','123456')";
        
        # 4.只能执行一条sql语句,调用query()方法
        $res = $mysqli -> query($sql1);
        if($res){
            //得到上一条插入操作产生的auto_increment的值
            echo '恭喜你,你是第'.$mysqli -> insert_id.'个注册账号的学生!<br/>';
        }else{
            //得到上一步操作产生的错误编号和错误信息
            echo 'error '.$mysqli -> errno.':'.$mysqli -> error;
        }
        # 5.关闭数据库连接
        $mysqli -> close();
    ?>
    

    mysqli实例下的affected_rows属性:得到上一步操作产生的受影响的记录条数

    <?php 
        # 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
        $serverName = "localhost"; 
        $userName = "root";
        $password = "12345678"; 
        $database = "qinfb_school";
        $mysqli = @new mysqli($serverName,$userName,$password,$database);
        if($mysqli -> connect_errno){
            //如果有连接错误,得到错误信息
            die('Connect Error:'.$mysqli -> connect_error);
        }
        # 2.设置默认的客户端编码方式
        $mysqli -> set_charset('utf-8');
        
        # 3.执行SQL预处理查询。
         
          $sql = <<< EOF
          insert student(stu_name,stu_psd) 
          values('孙前方','123456'),('宋万册3','123456'),('李白三','123456');
    EOF;
          
          $sql1 = "insert student(stu_name,stu_psd) 
          values('钱万5','123456'),('钱万6','123456'),('钱万8','123456')";
        
        # 4.只能执行一条sql语句,调用query()方法
        $res = $mysqli -> query($sql);
        if($res){
            //得到上一条插入操作产生的auto_increment的值
            echo '恭喜你,你是第'.$mysqli -> insert_id.'个注册账号的学生!<br/>';
            echo '有'.$mysqli -> affected_rows.'条记录受到影响';
        }else{
            //得到上一步操作产生的错误编号和错误信息
            echo 'error '.$mysqli -> errno.':'.$mysqli -> error;
        }
        # 5.关闭数据库连接
        $mysqli -> close();
    ?>
    

    更新操作

    <?php 
        # 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
        $serverName = "localhost"; 
        $userName = "root";
        $password = "12345678"; 
        $database = "qinfb_school";
        $mysqli = @new mysqli($serverName,$userName,$password,$database);
        if($mysqli -> connect_errno){
            //如果有连接错误,得到错误信息
            die('Connect Error:'.$mysqli -> connect_error);
        }
        # 2.设置默认的客户端编码方式
        $mysqli -> set_charset('utf-8');
        
        # 3.执行SQL预处理查询。
        //年龄增加5岁
          $sql = <<< EOF
          update student set stu_age=stu_age+5;
    EOF;
        
        # 4.只能执行一条sql语句,调用query()方法
        $res = $mysqli -> query($sql);
        if($res){
            echo '有'.$mysqli -> affected_rows.'条记录被更新';
        }else{
            //得到上一步操作产生的错误编号和错误信息
            echo 'error '.$mysqli -> errno.':'.$mysqli -> error;
        }
        # 5.关闭数据库连接
        $mysqli -> close();
    ?>
    


    删除记录

    <?php 
        # 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
        $serverName = "localhost"; 
        $userName = "root";
        $password = "12345678"; 
        $database = "qinfb_school";
        $mysqli = @new mysqli($serverName,$userName,$password,$database);
        if($mysqli -> connect_errno){
            //如果有连接错误,得到错误信息
            die('Connect Error:'.$mysqli -> connect_error);
        }
        # 2.设置默认的客户端编码方式
        $mysqli -> set_charset('utf-8');
        
        # 3.执行SQL预处理查询。
        //将表中id<10的用户删掉
          $sql = <<< EOF
          delete from student where stu_id < 10;
    EOF;
        # 4.只能执行一条sql语句,调用query()方法
        $res = $mysqli -> query($sql);
        if($res){
            echo '有'.$mysqli -> affected_rows.'条记录被删除';
        }else{
            //得到上一步操作产生的错误编号和错误信息
            echo 'error '.$mysqli -> errno.':'.$mysqli -> error;
        }
        # 5.关闭数据库连接
        $mysqli -> close();
    ?>
    


    affected_rows属性返回的值分为三种:

    • 1.受影响的记录条数,一般我们做逻辑判断让 affected_rows == 1 或者affected_rows > 0
    • 2.返回-1,代表sql语句有问题
    • 3.返回0 ,代表没有受影响的记录条数

    查询操作

    select关键字返回的是一个mysqli对象,并不像update、delete、insert直接可以拿到结果。

    <?php 
        # 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
        $serverName = "localhost"; 
        $userName = "root";
        $password = "12345678"; 
        $database = "qinfb_school";
        $mysqli = @new mysqli($serverName,$userName,$password,$database);
        if($mysqli -> connect_errno){
            //如果有连接错误,得到错误信息
            die('Connect Error:'.$mysqli -> connect_error);
        }
        # 2.设置默认的客户端编码方式
        $mysqli -> set_charset('utf-8');
    
        # 3.执行SQL查询。
        $sql = "select stu_id,stu_name,stu_age from student";
        $mysqli_result = $mysqli -> query($sql);
        var_dump($mysqli_result);
        # 5.关闭数据库连接
        $mysqli -> close();
    ?>
    

    我们可以得到一个mysqli_result对象,在这个对象里面我们还可以得到如下属性:

    • current_field:当前的字段信息
    • field_count: 字段的数量
    • lengths: 长度
    • num_rows: 得到结果中的记录条数,经常用到这个属性

    以num_rows属性作为逻辑判断打印页面信息

    <?php 
        # 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
        $serverName = "localhost"; 
        $userName = "root";
        $password = "12345678"; 
        $database = "qinfb_school";
        $mysqli = @new mysqli($serverName,$userName,$password,$database);
        if($mysqli -> connect_errno){
            //如果有连接错误,得到错误信息
            die('Connect Error:'.$mysqli -> connect_error);
        }
        # 2.设置默认的客户端编码方式
        $mysqli -> set_charset('utf-8');
    
        # 3.执行SQL查询。
        $sql = "select stu_id,stu_name,stu_age from student";
        $mysqli_result = $mysqli -> query($sql);
        if($mysqli_result && $mysqli_result -> num_rows > 0){
            echo '共查找到有'.$mysqli_result -> num_rows.'条结果集';
        }else {
            echo '查询错误或者结果集当中没有记录!';
        }
        
        # 5.关闭数据库连接
        $mysqli -> close();
    ?>
    

    $mysqli_result下调用fetch_all()函数,获取结果集中的所有记录,默认返回的是一个二维数组。

    • fetch_all(MYSQLI_NUM):返回数组中索引部分
    • fetch_all(MYSQLI_ASSOC):返回数组中关联部分,即字段部分
    • fetch_all(MYSQLI_BOTH):返回索引部分+字段部分

    $mysqli_result下调用fetch_row()函数,获取结果集中的第1条记录。


    案例代码:
    <?php 
        # 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
        $serverName = "localhost"; 
        $userName = "root";
        $password = "12345678"; 
        $database = "qinfb_school";
        $mysqli = @new mysqli($serverName,$userName,$password,$database);
        if($mysqli -> connect_errno){
            //如果有连接错误,得到错误信息
            die('Connect Error:'.$mysqli -> connect_error);
        }
        # 2.设置默认的客户端编码方式
        $mysqli -> set_charset('utf-8');
    
        # 3.执行SQL查询。
        $sql = "select stu_id,stu_name,stu_age from student";
        $mysqli_result = $mysqli -> query($sql);
        if($mysqli_result && $mysqli_result -> num_rows > 0){
            //$rows = $mysqli_result -> fetch_all();//获取结果集中的所有记录,默认返回一个二维数组
            //$rows = $mysqli_result -> fetch_all(MYSQLI_NUM); //获取结果集中的索引部分,默认
            //$rows = $mysqli_result -> fetch_all(MYSQLI_ASSOC); //获取结果集中字段部分
            //$rows = $mysqli_result -> fetch_all(MYSQLI_BOTH); //获取结果集中索引+字段部分
            
            $row = $mysqli_result -> fetch_row();//获取结果集中的第一条信息
            print_r($row);
    
        }else {
            echo '查询错误或者结果集当中没有记录!';
        }
        
        # 5.关闭数据库连接
        $mysqli -> close();
    ?>
    

    获取结果集中的一条记录的几种形式:

    <?php 
        # 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
        $serverName = "localhost"; 
        $userName = "root";
        $password = "12345678"; 
        $database = "qinfb_school";
        $mysqli = @new mysqli($serverName,$userName,$password,$database);
        if($mysqli -> connect_errno){
            //如果有连接错误,得到错误信息
            die('Connect Error:'.$mysqli -> connect_error);
        }
        # 2.设置默认的客户端编码方式
        $mysqli -> set_charset('utf-8');
    
        # 3.执行SQL查询。
        $sql = "select stu_id,stu_name,stu_age from student";
        $mysqli_result = $mysqli -> query($sql);
        if($mysqli_result && $mysqli_result -> num_rows > 0){
            $row = $mysqli_result -> fetch_row();//获取结果集中的第一条记录,作为索引数组返回
            print_r($row);
            echo '<hr/>';
            //每fetch一次,结果集的指针就会下移一位
            $row = $mysqli_result -> fetch_assoc();//获取结果集中的一条记录,作为关联数组返回
            print_r($row);
            echo '<hr/>';
            $row = $mysqli_result -> fetch_array();//获取结果集中的一条记录,索引数组+关联数组
            print_r($row);
            echo '<hr/>';
            $row = $mysqli_result -> fetch_array(MYSQLI_ASSOC);//获取结果集中的一条记录,作为类型返回
            print_r($row);
            echo '<hr/>';
            $row = $mysqli_result -> fetch_object();//获取结果集中的一条记录,作为对象返回
            print_r($row);
            //调整结果集指针,移动结果集中的内部指针
            echo '<hr/>';
            $row = $mysqli_result -> data_seek(0);//获取结果集中的一条记录,作为对象返回
            $row = $mysqli_result -> fetch_assoc();
            print_r($row);
        }else {
            echo '查询错误或者结果集当中没有记录!';
        }
        
        # 5.关闭数据库连接
        $mysqli -> close();
    ?>
    
    

    释放结果集内容的三种形式:任选其一使用

            $mysqli_result -> free();
            $mysqli_result -> free_result();
            $mysqli_result -> close();
    

    遍历获取结果集

    <?php 
        # 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
        $serverName = "localhost"; 
        $userName = "root";
        $password = "12345678"; 
        $database = "qinfb_school";
        $mysqli = @new mysqli($serverName,$userName,$password,$database);
        if($mysqli -> connect_errno){
            //如果有连接错误,得到错误信息
            die('Connect Error:'.$mysqli -> connect_error);
        }
        # 2.设置默认的客户端编码方式
        $mysqli -> set_charset('utf-8');
    
        # 3.执行SQL查询。
        $sql = "select stu_id,stu_name,stu_age from student";
        $mysqli_result = $mysqli -> query($sql);
        if($mysqli_result && $mysqli_result -> num_rows > 0){
            //通过遍历获取所有的结果集
            while($rows = $mysqli_result -> fetch_assoc()){
                print_r($rows);
            }
            //释放结果集内容的三种形式:
            $mysqli_result -> free();
            //$mysqli_result -> free_result();
            //$mysqli_result -> close();
        }else {
            echo '查询错误或者结果集当中没有记录!';
        }
        
        # 5.关闭数据库连接
        $mysqli -> close();
    ?>
    
    

    php里面有()的是函数方法,没括号的是属性,->用来引用对象的成员(属性与方法);::指以“静态方式static”操作某个“类”的成员方法或属性。

    相关文章

      网友评论

          本文标题:MySQLi实现CURD(增删改查)基本操作

          本文链接:https://www.haomeiwen.com/subject/imkreltx.html