2024 年 PHP Conference Japan

mysqli_result 類別

(PHP 5, PHP 7, PHP 8)

簡介

表示從資料庫查詢中獲得的結果集。

類別概要

類別 mysqli_result 實作 IteratorAggregate {
/* 屬性 */
公開 唯讀 int $current_field;
公開 唯讀 int $field_count;
公開 唯讀 ?array $lengths;
公開唯讀 整數|字串 $num_rows;
公開 整數 $type;
/* 方法 */
公開 __construct(mysqli $mysql, 整數 $result_mode = MYSQLI_STORE_RESULT)
公開 data_seek(整數 $offset): 布林值
公開 fetch_all(整數 $mode = MYSQLI_NUM): 陣列
公開 fetch_array(整數 $mode = MYSQLI_BOTH): 陣列|空值|false
公開 fetch_assoc(): 陣列|空值|false
公開 fetch_column(整數 $column = 0): 空值|整數|浮點數|字串|false
公開 fetch_field(): 物件|false
公開 fetch_field_direct(整數 $index): 物件|false
公開 fetch_fields(): 陣列
公開 fetch_object(字串 $class = "stdClass", 陣列 $constructor_args = []): 物件|空值|false
公開 field_seek(整數 $index): true
公開 free():
公開 close():
公開 free_result():
}

屬性

type

整數 形式儲存結果是否被緩衝 (分別為 MYSQLI_STORE_RESULTMYSQLI_USE_RESULT)。

更新日誌

版本 說明
8.0.0 mysqli_result 現在實作了 IteratorAggregate。先前實作的是 Traversable

目錄

新增註釋

使用者貢獻的註釋 4 則註釋

69
tuxedobob
12 年前
將舊專案從使用 mysql 擴充套件轉換到 mysqli 擴充套件時,我發現最惱人的變更是 mysqli 中缺少對應的 mysql_result 函式。雖然 mysql_result 通常是一個很糟糕的函式,但它對於從結果集中提取單個結果欄位*值*很有用(例如,查詢使用者的 ID)。

這裡近似地實現了 mysql_result 的行為,但您可能需要將其命名為 mysqli_result 以外的名稱,以免誤認為它是實際的內建函式。

<?php
function mysqli_result($res, $row, $field=0) {
$res->data_seek($row);
$datarow = $res->fetch_array();
return
$datarow[$field];
}
?>

透過物件導向介面實作它就留給讀者作為練習。
18
Cem Kayali / cemkayali(a)eticaret.com.tr
6 年前
從 PHP 5 切換到 PHP 7,尤其是在您參與一個持續進行的長期專案時,沒有 mysqli_result 函式是很遺憾的。

因此,這可能會有幫助,您可以隨意呼叫此函式。我假設您執行的是限制性搜尋(僅搜尋單列或幾列)。

function mysqli_result($search, $row, $field){
$i=0; while($results=mysqli_fetch_array($search)){
if ($i==$row){$result=$results[$field];}
$i++;}
return $result;}

簡而言之;

$search=mysqli_query($connection, "select name from table_name where id='7'");
$name=mysqli_result($search, 0, "id");

祝一切順利,
14
Marc17
10 年前
一個「mysqli_result」函式,其中 $field 可以像 table_name.field_name,無論是否有別名。
<?php
函數 mysqli_result($result,$row,$field=0) {
如果 (
$result===false) 返回 false;
如果 (
$row>=mysqli_num_rows($result)) 返回 false;
如果 (
is_string($field) && !(strpos($field,".")===false)) {
$t_field=explode(".",$field);
$field=-1;
$t_fields=mysqli_fetch_fields($result);
對 (
$id=0;$id<mysqli_num_fields($result);$id++) {
如果 (
$t_fields[$id]->table==$t_field[0] && $t_fields[$id]->name==$t_field[1]) {
$field=$id;
跳出迴圈;
}
}
如果 (
$field==-1) 返回 false;
}
mysqli_data_seek($result,$row);
$line=mysqli_fetch_array($result);
返回 isset(
$line[$field])?$line[$field]:false;
}
?>
1
blar at blar dot de
15 年前
擴展 MySQLi_Result

<?php

class Database_MySQLi extends MySQLi
{
public function
query($query)
{
$this->real_query($query);
return new
Database_MySQLi_Result($this);
}
}

class
Database_MySQLi_Result extends MySQLi_Result
{
public function
fetch()
{
return
$this->fetch_assoc();
}

public function
fetchAll()
{
$rows = array();
while(
$row = $this->fetch())
{
$rows[] = $row;
}
return
$rows;
}
}

?>
To Top