结果集中获取记录的4种方法

先使用SQL创建表,并向表中插入数据

create table contactInfo(

uid mediumint(8)

unsigned NOT NULL AUTO_INCREMENT,    #联系人ID

name varchar(50) NOT NULL,        #姓名

deparmentId char(3) NOT NULL,        #部门编号

address varchar(80) NOT NULL,        #联系地址

phone    varchar(20),            #联系电话

email varchar(100),            #联系人的电子邮件

PRIMARY KEY(uid)            #设置用户ID(即uid)为主键

);

fetch_row()、fetch_array()、fetch_assoc()、fetch_object()这个四个函数以相似的方法来依次读取结果数据行。它们只在引用字段的方式上有差别

它们的共同点:每次调用将自动返回下一条结果记录,如果已经到达结果数据表的末尾,返回false

1、$result->fetch_row()

从结果集中获取一条结果记录,将值存放在一个索引数组中,是四个方法中最方便的一个。

各个字段需要以$row[$n]的方式读取,其中$row是从结果集中获取的一行记录返回的数组,$n为连续的整数下标。

因为返回的是索引数组,所以还可以和list()函数结合在一起使用。

<?php

$mysqli=new mysqli("localhost","mysql_user","mysql_pwd","my_db_name");

if(mysqli_connect_errno()){

printf("连接失败:%s<br>",mysqli_connect_error());

exit();

}

$mysqli->query(‘set names gb2312‘);        //设置字符集为国标2312码

/*将部门编号为D01的联系人姓名和电子邮件全部取出存入到结果集中*/

$result=$mysqli->query("SELECT name,email FROM contactInfo WHERE departmentId=‘D01‘");

echo ‘D01部门的联系人姓名和电子邮件:‘;

echo ‘<ol>‘;

while(list($name,$email)=$result->fetch_row()){

echo ‘<li>‘.$name:$email.‘</li>‘;

}

echo ‘</ol>‘;

?>

2、$result->fetch_assoc()

该方法将以一个关联数组的形式返回一条结果记录,数据的字段名表示键,字段内容表示值。

<?php

$mysqli=new mysqli(‘localhost‘,‘mysql_user‘,‘mysql_pwd‘,‘my_db_name‘);

if(mysqli_connect_errno()){

printf("连接失败:%s<br>",mysqli_connect_error());

exit();

}

$mysqli->query(‘set names gb2312‘);

$result=mysqli->query(‘SELECT * FROM contactInfo‘);

echo ‘<table widht="90%" border="1" align="center">‘;

echo ‘<caption><h1>联系人信息表</h1></caption>‘

//<caption>标签提供了表格的简述,有可能是用于让搜索引擎更容易找到

echo ‘<th>用户ID</th><th>姓名</th><th>部门编号</th><th>联系地址</th><th>联系电话</th><th>电子邮件</th>‘;

while($row=$result->fetch_assoc()){

//注意$result->fetch_accoc()是返回关联数组,即使用$key_name(键值)访问数值

echo ‘<tr align="cneter">‘;

echo ‘<td>‘.$row[‘uid‘].‘</td>‘;

echo ‘<td>‘.$row[‘name‘].‘</td>‘;

echo ‘<td>‘.$row[‘departmentId‘].‘</td>‘;

echo ‘<td>‘.$row[‘address‘].‘</td>‘;

echo ‘<td>‘.$row[‘phone‘].‘</td>‘;

echo ‘<td>‘.$row[‘email‘].‘</td>‘;

echo ‘</tr>‘;

}

echo ‘</table>‘;

$result->close();

$mysqli->close();

?>

3、$result->fetch_array()

该方法可以说是fetch()_row和fetch_assco()两个方法的结合版本,可以将结果集的各条记录获取为一个关联数组或数值索引数组,或者同时获取为关联数组和索引数组。默认情况,会同时获取这两种数组。可以通过在该方法传入如下不同的值来修改这种默认行为。

MYSQLI_ASSOC    :记录被作为关联数组返回,字段名为键,字段内容为值。

MYSQLI_NUM    :记录被作为索引数组返回,按查询中指定的字段名顺序排序。

MYSQLI_BOTH    :这是默认值,记录即作为关联数组又作为索引数组返回。

4、$result->fetch_object()

该方法与前面三个方法不同,它将以一个对象的形式返回一条结果记录,而不是数组。它的各个字段需要以对象的方式进行访问,数据列的名字区分字母大小写情况。

<?php

$mysqli=new mysqli("localhost","mysql_user","mysql_pwd","my_db_name");

if(mysqli_connect_errno()){

printf("连接失败:%s<br>",mysqli_connect_error());

exit();

}

$mysqli->query("set names gb2312");

$mysqli->query("SELECT * FROM contactInfo");

echo ‘<table width="%90" border="1" align="center">‘;

echo ‘<caption><h1>联系人信息表</h1></caption>‘

;

echo ‘<th>用户ID</th><th>姓名</th><th>部门编号</th><th>联系地址</th><th>联系电话</th><th>电子邮件</th>‘;

while($rowObj=$result->fetch_object()){

echo ‘<tr align="center">‘;

echo ‘<td>‘.$rowObj->uid.‘</td>‘;

echo ‘<td>‘.$rowObj->name.‘</td>‘;

echo ‘<td>‘.$rowObj->deparmentId.‘</td>‘;

echo ‘<td>‘.$rowObj->address.‘</td>‘;

echo ‘<td>‘.$rowObj->phone.‘</td>‘;

echo ‘<td>‘.$rowObj->email.‘</td>‘;

echo ‘</tr>‘;

}

echo ‘</table>‘

$result->close();

$mysqli->close();

?>

以上四个结果集中遍历数据的方法,每次调用都将自动返回下一条结果记录。如果想改变这个读取的顺序,可以使用结果集对象中的data_seek()方法明确地改变当前记录位置。还可以使用结果集对象中的num_rows属性,给出结果数据表里的记录个数。还可以使用结果对象中的lengths属性返回一个组,该数组的各个元素是使用以上四个方法最后读取结果记录中各字段里的字符个数。

时间: 2024-11-10 04:06:46

结果集中获取记录的4种方法的相关文章

总结C#获取当前路径的7种方法(转载)

总结C#获取当前路径的7种方法 C#获取当前路径的方法如下: 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName -获取模块的完整路径. 2. System.Environment.CurrentDirectory -获取和设置当前目录(该进程从中启动的目录)的完全限定目录. 3. System.IO.Directory.GetCurrentDirectory() -获取应用程序的当前工作目录.这个不一定是程

spring+hibernate删除单条记录的几种方法

spring+hibernate删除单条记录的几种方法

反射获取类的几种方法

1 public class Demo { 2 3 /** 4 * 反射:加载类,获得类的字节码 5 * @param args 6 * @throws ClassNotFoundException 7 */ 8 public static void main(String[] args) throws ClassNotFoundException { 9 10 //1 11 Class clazz = Class.forName("Person"); 12 13 //2 14 Cla

VC++获取IDC_EDIT的7种方法

VC++获取IDC_EDIT的7种方法 http://blog.csdn.net/baizengfei/article/details/7997618 //第一种方法 int number1, number2, number3; char char1[10], char2[10], char3[10]; GetDlgItem(IDC_EDIT1)->GetWindowText(cahr1, 10); GetDlgITem(IDC_EDIT2)->GetWindowText(char2, 10)

C#获取当前路径的7种方法

总结C#获取当前路径的7种方法 C#获取当前路径的方法如下: 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName -获取模块的完整路径. 2. System.Environment.CurrentDirectory -获取和设置当前目录(该进程从中启动的目录)的完全限定目录. 3. System.IO.Directory.GetCurrentDirectory() -获取应用程序的当前工作目录.这个不一定是程

spring获取webapplicationcontext,applicationcontext几种方法详解(转)

方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("beanId"); 说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况. 方法二:通过Spring提供的工具类获取ApplicationConte

ASP.NET获取IP的6种方法(转载于LanceZhang&#39;s Tech Blog)

服务端: 1 //方法一 2 HttpContext.Current.Request.UserHostAddress; 3 4 //方法二 5 HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 6 7 //方法三 8 string strHostName = System.Net.Dns.GetHostName(); 9 string clientIPAddress = System.Net.Dns.GetHostA

[WinAPI] 获取窗口句柄的几种方法

1.使用FindWindow函数获取窗口句柄 示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小,并且移动窗口到指定位置. 我们想获得酷我音乐盒的窗口句柄并移动它,该怎么办呢? 首先打开VC或者VS里面tool中的SPY++点击查找窗口如下: PS:把那个靶心似的的东西移动到想查找的窗口上,这里是酷我音乐盒,下面会出现窗口的信息,包括窗口的句柄.名字.类.类型.大小和位置.点击OK还有更多信息~ PS:因为FindWindowA(LPCSTR lpClassName ,LPCSTR

【转】oracle 中随机取一条记录的两种方法

oracle 中随机取一条记录的两种方法 V_COUNT INT:=0; V_NUM INT :=0; 1:TBL_MYTABLE 表中要有一个值连续且唯一的列FID BEGIN SELECT COUNT(*) INTO V_COUNT FROM  TBL_MYTABLE; SELECT TRUNC(DBMS_RADOM.VALUE(1,V_COUNT+1)) INTO V_NUM FROM DUAL; SELECT * FROM TBL_MYTABLE T WHERE T.FID=V_NUM;