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

2021-06-07  本文已影响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属性返回的值分为三种:


查询操作

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对象,在这个对象里面我们还可以得到如下属性:


以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()函数,获取结果集中的所有记录,默认返回的是一个二维数组。

$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”操作某个“类”的成员方法或属性。

上一篇下一篇

猜你喜欢

热点阅读