PHP&MySQL基础(三):处理查询SQL返回的结果集

本文介绍了如何使用PHP连接MySQL数据库,包括处理错误、设置字符编码。接着详细讲解了查询操作,如将数据转换为关联数组、索引数组、索引+关联数组以及对象,同时强调了fetch系列函数在处理查询结果集时指针的移动行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PHP&MySQL基础(一):创建数据库并通过PHP进行连接_长风沛雨的博客-CSDN博客

PHP&MySQL基础(二):通过PHP对MySQL进行增、删、改、查_长风沛雨的博客-CSDN博客

目录

一、连接MySQL,处理错误,统一字符编码

二、查询单条数据,把数据读取成一个关联数组

三、把数据读取成一个索引数组

 四、把查询记录转为索引+关联数组

五、查询记录转为对象


在PHP处理MySQL的增删改查中,增、删、改返回的结果都是布尔值的true和false

但是查询返回的结果是一个【结果集】

这个返回的结果集是可以处理为关联数组、索引数组、对象的形式的


一、连接MySQL,处理错误,统一字符编码

    <?php
      //1、连接数据库
      $link = new mysqli('localhost','root','123456','db_test','3306');
      // var_dump($link);
      //2、错误连接处理
      if($link->connect_error){ # 判断如果link对象里面的异常不为空
       switch($link->connect_error){
           case 1045 : echo " 访问被拒绝,可能用户名或者密码错位";
           break;
           case 1049 : echo " 数据库名称错位";
           break;
           default:break;
        }        
      }else{
        //连接不存在问题,开始处理操作功能
        //3、统一字符编码:使用连接对象自带的query方法执行sql语句,该sql是用来设置字符集编码
        $link->query("SET NAMES utf8");
    }
    ?>

在else分支中,对数据库进行一个查询

        $sql = "SELECT * FROM tb_user WHERE id = 2";
        $res = $link->query($sql);
        var_dump($res);

 

这里是查询到了id为2的数据,返回的结果集显示:共一条数据,有6个字段

如果我们需要使用这些数据,就需要进行一个数据的转换

二、查询单条数据,把数据读取成一个关联数组

查询单条数据,读取成一个关联数组,指针会下移一条数据

这里需要使用到方法

mysqli_fetch_assoc() 

        把查询返回的对象传入方法,返回一个关联数组

        //2.3 查询单条数据,读取成一个关联数组,指针下移一条记录
        //mysqli_fetch_assoc()把查询返回的对象传入该方法,返回一个关联数组
        $row = mysqli_fetch_assoc($res);
        var_dump($row);

前面的SQL是查询了id为2的数据,我们可以把这一条数据,通过mysqli_fetch_assoc() 返回一个关联数组(键值对的方式)
PHP 关联数组 (w3schools.cn)https://www.w3schools.cn/php/php_arrays_associative.asp

如果要使用到这一条数据,可以

echo "用户名字:".$row['userName'].",用户密码:".$row['pwd'];
# 用户名字:CHANG,用户密码:654321

获取关联数组的索引值:数组名['键名']

三、把数据读取成一个索引数组

除了读取成一个关联数组以外,还可以读取成一个【索引数组】,指针同样会向下移动

把一条记录读取成一个索引数组,需要使用到方法:mysqli_fetch_row()

传入的参数同样是查询sql返回的结果集,也就是前面的$res

        $rows= mysqli_fetch_row($res);
        var_dump($rows);

同样是处理前面查询id为2的数据

索引数组的取值,就是:数组[索引值]

尝试输出一下

echo "用户名:".$rows[0].",密码是:".$rows[1];
# 用户名:2,密码是:CHANG

 四、把查询记录转为索引+关联数组

把一条记录读取成一个既可以用索引方式访问,也可以用关联的方式访问的数组,指针下移一条记录(数组长度是记录的字段是的2倍

使用方法:mysqli_fetch_array()

        $rows2 = mysqli_fetch_array($res);
        var_dump($rows2);

长度是记录字段的2倍(感觉这个了解一下就行)

五、查询记录转为对象

把一条记录读取成一个对象,指针下移一条数据

使用到方法:mysqli_fetch_object()

        $rows = mysqli_fetch_object($res);
        var_dump($rows);

 PHP对象的取值:对象->属性

echo "用户名:".$rows->userName.",密码:".$rows->pwd;
# 用户名:CHANG,密码:654321

注意

指针是跟随结果集对象的,所有的fetch方法共用同个指针

也就是上面4个mysqli_fetch的方法,指针都会共用并下移了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长风沛雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值