美文网首页
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(增删改查)基本操作

    案例演示准备:首先生成一张student表和规范表的一些字段。 查看一个表中有哪些字段: 查看一个表中有哪些字段:...

  • Laravel ORM Model 的预定义属性

    缘起 后端开发的基本操作就是处理数据 -- "增删改查 / CURD", 而 Laravel 框架的"对象关系映射...

  • JAEE学习笔记(17)mysql

    MySQL数据库 数据库(CURD -- 增删改查) 表(table)(CURD -- 增删改查) 数据(CURD...

  • Python day24_mysql数据库

    mysql 数据库的操作 数据表的操作 增删改查(curd)

  • 表内容的操作

    对表数据进行增删改查(curd) 增(insert into): auto_increment自增长 SELECT...

  • 数据库相关

    一、 数据库的操作 二、 数据表的操作 三、 增删改查(curd)

  • mysql(03day)

    一. mysql数据库的增删改查 增删改查(curd)curd的解释:代表创建(create),更新(update...

  • 增删改查

    增删改查,是实现数据操作的基本功能。 在数据库的操作中,习惯把它分为两大类,数据查询(查)和数据更新(增、删、改)...

  • 数据库基础:增删改查(curd)备份及恢复

    增删改查(curd) curd的解释: 代表创建(Create)、更新(Update)、读取(Retrieve)和...

  • MyBatis增删改查

    增删改查简称为CURD,即Create Update Retrieve Delete 操作。 首先创建一个Mave...

网友评论

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

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