結果集中擷取記錄的4種方法

來源:互聯網
上載者:User
先使用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 '
  1. '.$name:$email.'
  2. ';
    }
    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 ' ' // '; while($row=$result->fetch_assoc()){ //注意$result->fetch_accoc()是返回關聯陣列,即使用$key_name(鍵值)訪問數值 echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; } echo '

連絡人資訊表

標籤提供了表格的簡述,有可能是用於讓搜尋引擎更容易找到

echo '
使用者ID 姓名 部門編號 聯絡地址 聯絡電話 電子郵件
'.$row['uid'].''.$row['name'].''.$row['departmentId'].''.$row['address'].''.$row['phone'].''.$row['email'].'
';
$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 ' '; while($rowObj=$result->fetch_object()){ echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; } echo '

連絡人資訊表

使用者ID 姓名 部門編號 聯絡地址 聯絡電話 電子郵件
'.$rowObj->uid.''.$rowObj->name.''.$rowObj->deparmentId.''.$rowObj->address.''.$rowObj->phone.''.$rowObj->email.'
'
$result->close();
$mysqli->close();
?>
以上四個結果集中遍曆資料的方法,每次調用都將自動返回下一條結果記錄。如果想改變這個讀取的順序,可以使用結果集對象中的data_seek()方法明確地改變目前記錄位置。還可以使用結果集對象中的num_rows屬性,給出結果資料表裡的記錄個數。還可以使用結果對象中的lengths屬性返回一個組,該數組的各個元素是使用以上四個方法最後讀取結果記錄中各欄位裡的字元個數。

以上就介紹了結果集中擷取記錄的4種方法,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.