mysqli_result 类

(PHP 5, PHP 7, PHP 8)

简介

表示从数据库查询中获得的结果集。

类概要

class mysqli_result implements IteratorAggregate {
/* 属性 */
public readonly int $current_field;
public readonly int $field_count;
public readonly ?array $lengths;
public readonly int|string $num_rows;
public int $type;
/* 方法 */
public __construct(mysqli $mysql, int $result_mode = MYSQLI_STORE_RESULT)
public data_seek(int $offset): bool
public fetch_all(int $mode = MYSQLI_NUM): array
public fetch_column(int $column = 0): null|int|float|string|false
public fetch_object(string $class = "stdClass", array $constructor_args = []): object|null|false
public field_seek(int $index): true
public free(): void
public close(): void
public free_result(): void
}

属性

type

存储结果是缓冲的还是非缓冲的,作为一个 int (分别为 MYSQLI_STORE_RESULTMYSQLI_USE_RESULT)。

变更日志

版本 描述
8.0.0 mysqli_result 现在实现了 IteratorAggregate。之前,实现了 Traversable

目录

添加注释

用户贡献注释 4 条注释

tuxedobob
11 年前
将旧项目从使用 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];
}
?>

通过 OO 接口实现它留给读者作为练习。
Cem Kayali / cemkayali(a)eticaret.com.tr
5 年前
从 Php5 切换到 Php7,尤其是如果你在一个持续的长期项目上工作,那么没有 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");

祝一切顺利,
Marc17
10 年前
一个 "mysqli_result" 函数,其中 $field 可以是带别名或不带别名的 table_name.field_name。
<?php
function mysqli_result($result,$row,$field=0) {
if (
$result===false) return false;
if (
$row>=mysqli_num_rows($result)) return false;
if (
is_string($field) && !(strpos($field,".")===false)) {
$t_field=explode(".",$field);
$field=-1;
$t_fields=mysqli_fetch_fields($result);
for (
$id=0;$id<mysqli_num_fields($result);$id++) {
if (
$t_fields[$id]->table==$t_field[0] && $t_fields[$id]->name==$t_field[1]) {
$field=$id;
break;
}
}
if (
$field==-1) return false;
}
mysqli_data_seek($result,$row);
$line=mysqli_fetch_array($result);
return isset(
$line[$field])?$line[$field]:false;
}
?>
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