在之前的文章中給大家帶來了《PHP中mysqli_select_db與mysqli_query函數的用法》,其中給大家詳細的介紹了應該怎樣使用者兩個函數以及他們的主要作用,本篇我們繼續來看一下PHP中怎樣獲取SQL的查詢結果。希望對大家有幫助!
在上一篇文章中講到了要如何執行一條SQL語句,也就是調用mysqli_query()
函數,通過該函數我們已經能夠查詢到數據庫的信息了,但是在我們的日常開發中還是需要對這一個結果進行處理才能夠得到我們想要的信息。那接下來我們就看一下PHP中處理結果常用的幾個函數吧。
mysqli_fetch_row()
函數
mysqli_fetch_row() 函數可以從結果集中取得一行,并以索引數組的形式返回,其語法格式如下:
mysqli_result::fetch_row()
這是面向對象的寫法,面向過程的寫法如下:
mysqli_fetch_row(mysqli_result $result)
其中需要注意的是: mysqli_result
和 $result
表示為使用 mysqli_query() 函數獲取的結果集。
接下來我們通過示例來看一下mysqli_fetch_row() 函數的用法,示例如下:
<?php $host = 'localhost'; $username = 'root'; $password = 'root'; $dbname = 'test'; $mysql = new Mysqli($host, $username, $password, $dbname); if($mysql -> connect_errno){ die('數據庫連接失敗:'.$mysql->connect_errno); }else{ $sql = 'select name,sex,age from user'; // SQL 語句 $result = $mysql -> query($sql); // 執行上面的 SQL 語句 $data = $result -> fetch_row(); $mysql -> close(); } echo '<pre>'; print_r($data); ?>
輸出結果:
上述示例中,通過mysqli_fetch_row() 函數成功查詢到了數據庫中的其中一行數據,并且是以索引數組的方式返回的。那接下來我們看一下不同的返回形式。
mysqli_fetch_assoc()
函數
mysqli_fetch_assoc() 函數可以從結果集中取得一行,并以關聯數組的形式返回,該函數的語法格式如下:
mysqli_result::fetch_assoc()
這是其面向對象的語法格式寫法,下面是起面向過程語法格式的寫法:
mysqli_fetch_assoc(mysqli_result $result)
其中需要注意的是: mysqli_result
和 $result
表示為使用 mysqli_query() 函數獲取的結果集。
接下來我們通過示例來看一下mysqli_fetch_assoc() 函數的使用,示例如下:
<?php $host = 'localhost'; $username = 'root'; $password = 'root'; $dbname = 'test'; $link = @mysqli_connect($host, $username, $password, $dbname); if($link){ $sql = 'select name,sex,age from user'; // SQL 語句 $result = mysqli_query($link, $sql); // 執行 SQL 語句,并返回結果 $data = mysqli_fetch_assoc($result); // 從結果集中獲取一條數據 mysqli_close($link); }else{ echo '數據庫連接失敗!'; } echo '<pre>'; print_r($data); ?>
輸出結果:
由上述示例,我們通過mysqli_fetch_assoc() 函數成功的獲取了數據庫中的一行信息并且通過關聯數組的方式返回。我們也可以通過函數來控住返回數據的形式,讓它可以是索引數組也可以是關聯數組或者兩者兼顧的形式,這時候我們就要用到mysqli_fetch_array() 函數。
mysqli_fetch_array()
函數
mysqli_fetch_array() 函數可以從結果集中取得一行,并根據參數以關聯數組、索引數組或二者兼有的形式返回,它的語法格式如下:
mysqli_result::fetch_array([int $resulttype = MYSQLI_BOTH])
這是面向對象的語法方式,下面是面向過程的語法方式:
mysqli_fetch_array(mysqli_result $result[, int $resulttype = MYSQLI_BOTH])
其中需要注意的是:
-
mysqli_result
和$result
表示為使用 mysqli_query() 函數獲取的結果集。 -
$resulttype
為可選參數,它是一個常量,用來設定返回值的類型,它的取值可以是MYSQLI_ASSOC
、MYSQLI_NUM
或MYSQLI_BOTH
表示返回值的不同類型。
接下來我們通過示例來看一下mysqli_fetch_array() 函數的用法,示例如下:
<?php $host = 'localhost'; $username = 'root'; $password = 'root'; $dbname = 'test'; $link = @mysqli_connect($host, $username, $password, $dbname); if($link){ $sql = 'select name,sex,age from user'; // SQL 語句 $result = mysqli_query($link, $sql); // 執行 SQL 語句,并返回結果 $data = mysqli_fetch_array($result, MYSQLI_ASSOC);// 從結果集中獲取所有數據 mysqli_close($link); }else{ echo '數據庫連接失敗!'; } echo '<pre>'; print_r($data); ?>
輸出結果:
上述示例中,我們選擇了通過關聯數組的形式來返回數據,我們通過mysqli_fetch_array() 函數可以選擇返回值的不同類型。
mysqli_fetch_all()
函數
mysqli_fetch_all() 函數可以獲取結果集中的所有數據,并根據參數以關聯數組、索引數組或二者兼有的形式返回,它的語法格式如下:
mysqli_result::fetch_all([int $resulttype = MYSQLI_NUM])
這是面向對象的寫法,下面是面向過程的寫法:
mysqli_fetch_all(mysqli_result $result [, int $resulttype = MYSQLI_NUM])
其中需要注意的是:與mysqli_fetch_array() 函數的語法相同
-
mysqli_resul
t和$result
表示為使用 mysqli_query() 函數獲取的結果集。 -
$resulttype
為可選參數,它是一個常量,用來設定返回值的類型,它的取值可以是MYSQLI_ASSOC
、MYSQLI_NUM
或MYSQLI_BOTH
表示返回值的不同類型。
接下來通過示例來看一下mysqli_fetch_all() 函數的使用,示例如下:
<?php $host = 'localhost'; $username = 'root'; $password = 'root'; $dbname = 'test'; $mysql = new Mysqli($host, $username, $password, $dbname); if($mysql -> connect_errno){ die('數據庫連接失敗:'.$mysql->connect_errno); }else{ $sql = 'select name,sex,age from user'; // SQL 語句 $result = $mysql -> query($sql); // 執行上面的 SQL 語句 $data = $result -> fetch_all(MYSQLI_ASSOC); $mysql -> close(); } echo '<pre>'; print_r($data); ?>
輸出結果:
上述示例中,便是通過mysqli_fetch_all() 函數選擇以關聯數組的形式返回所有的數據。
大家如果感興趣的話,可以點擊《PHP視頻教程》進行