先使用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()函數結合在一起使用。
$mysqli=new mysqli("localhost","mysql_user","mysql_pwd","my_db_name");
if(mysqli_connect_errno()){
printf("串連失敗:%s
",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 '
';
while(list($name,$email)=$result->fetch_row()){
echo '
- '.$name:$email.'
';
}
echo '
';
?>
2、$result->fetch_assoc()
該方法將以一個關聯陣列的形式返回一條結果記錄,資料的欄位名表示鍵,欄位內容表示值。
$mysqli=new mysqli('localhost','mysql_user','mysql_pwd','my_db_name');
if(mysqli_connect_errno()){
printf("串連失敗:%s
",mysqli_connect_error());
exit();
}
$mysqli->query('set names gb2312');
$result=mysqli->query('SELECT * FROM contactInfo');
echo '
'; echo '
連絡人資訊表
' //
標籤提供了表格的簡述,有可能是用於讓搜尋引擎更容易找到
echo '
| 使用者ID |
姓名 |
部門編號 |
聯絡地址 |
聯絡電話 |
電子郵件 | '; while($row=$result->fetch_assoc()){ //注意$result->fetch_accoc()是返回關聯陣列,即使用$key_name(鍵值)訪問數值 echo '
'; echo '
| '.$row['uid'].' | '; echo '
'.$row['name'].' | '; echo '
'.$row['departmentId'].' | '; echo '
'.$row['address'].' | '; echo '
'.$row['phone'].' | '; echo '
'.$row['email'].' | '; echo '
'; } echo '
';
$result->close();
$mysqli->close();
?>
3、$result->fetch_array()
該方法可以說是fetch()_row和fetch_assco()兩個方法的結合版本,可以將結果集的各條記錄擷取為一個關聯陣列或數值索引數組,或者同時擷取為關聯陣列和索引數組。預設情況,會同時擷取這兩種數組。可以通過在該方法傳入如下不同的值來修改這種預設行為。
MYSQLI_ASSOC :記錄被作為關聯陣列返回,欄位名為鍵,欄位內容為值。
MYSQLI_NUM :記錄被作為索引數組返回,按查詢中指定的欄位名順序排序。
MYSQLI_BOTH :這是預設值,記錄即作為關聯陣列又作為索引數組返回。
4、$result->fetch_object()
該方法與前面三個方法不同,它將以一個對象的形式返回一條結果記錄,而不是數組。它的各個欄位需要以對象的方式進行訪問,資料列的名字區分字母大小寫情況。
$mysqli=new mysqli("localhost","mysql_user","mysql_pwd","my_db_name");
if(mysqli_connect_errno()){
printf("串連失敗:%s
",mysqli_connect_error());
exit();
}
$mysqli->query("set names gb2312");
$mysqli->query("SELECT * FROM contactInfo");
echo '
'; echo '
連絡人資訊表
' ; echo '
| 使用者ID |
姓名 |
部門編號 |
聯絡地址 |
聯絡電話 |
電子郵件 | '; while($rowObj=$result->fetch_object()){ echo '
'; echo '
| '.$rowObj->uid.' | '; echo '
'.$rowObj->name.' | '; echo '
'.$rowObj->deparmentId.' | '; echo '
'.$rowObj->address.' | '; echo '
'.$rowObj->phone.' | '; echo '
'.$rowObj->email.' | '; echo '
'; } echo '
'
$result->close();
$mysqli->close();
?>
以上四個結果集中遍曆資料的方法,每次調用都將自動返回下一條結果記錄。如果想改變這個讀取的順序,可以使用結果集對象中的data_seek()方法明確地改變目前記錄位置。還可以使用結果集對象中的num_rows屬性,給出結果資料表裡的記錄個數。還可以使用結果對象中的lengths屬性返回一個組,該數組的各個元素是使用以上四個方法最後讀取結果記錄中各欄位裡的字元個數。
以上就介紹了結果集中擷取記錄的4種方法,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。