mysql_result

(PHP 4, PHP 5)

mysql_result获取结果数据

警告

此扩展在 PHP 5.5.0 中已弃用,并在 PHP 7.0.0 中删除。应改用 MySQLiPDO_MySQL 扩展。另请参见 MySQL: 选择 API 指南。此函数的替代方案包括

描述

mysql_result(资源 $result, 整型 $row, 混合 $field = 0): 字符串

从 MySQL 结果集中检索一个单元格的内容。

处理大型结果集时,应考虑使用以下函数之一来获取整行。由于这些函数在一次函数调用中返回多个单元格的内容,因此它们比 mysql_result() 快得多。另外,请注意,为 field 参数指定数字偏移比指定字段名称或表名.字段名称参数快得多。

参数

result

正在评估的结果 资源。此结果来自对 mysql_query() 的调用。

row

正在检索的结果中的行号。行号从 0 开始。

field

要检索的字段的名称或偏移量。

它可以是字段的偏移量、字段的名称或字段的表点字段名称(表名.字段名)。如果列名已别名('select foo as bar from...'),请使用别名而不是列名。如果未定义,则检索第一个字段。

返回值

成功时,从 MySQL 结果集中的一个单元格的内容;失败时,为 false

示例

示例 #1 mysql_result() 示例

<?php
$link
= mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!
$link) {
die(
'无法连接: ' . mysql_error());
}
if (!
mysql_select_db('database_name')) {
die(
'无法选择数据库: ' . mysql_error());
}
$result = mysql_query('SELECT name FROM work.employee');
if (!
$result) {
die(
'无法查询: ' . mysql_error());
}
echo
mysql_result($result, 2); // 输出第三个员工的姓名

mysql_close($link);
?>

注意

注意:

不应将对 mysql_result() 的调用与处理结果集的其他函数的调用混合使用。

参见

添加备注

用户贡献的备注 8 条备注

freedman at FreeFormIT dot com
9 年前
以下是使用 mysqli 的粗略替换

if (!function_exists('mysql_result')) {
function mysql_result($result, $number, $field=0) {
mysqli_data_seek($result, $number);
$row = mysqli_fetch_array($result);
return $row[$field];
}
}
mark at pnod dot co dot uk
1 年前
要替换行计数,例如

$querystring = "SELECT COUNT(*) FROM table WHERE column1 = 'EXAMPLE'";
$total_records = mysql_result(mysql_query($querystring,$connection),0);

使用 mysqli_fetch_row

$querystring = "SELECT COUNT(*) FROM table WHERE column1 = 'EXAMPLE'";
$rowcount = mysqli_fetch_row(mysqli_query($connection,$querystring));
$total_records = $rowcount[0];
bob dot schuon at loungelizard dot com
4 年前
此函数考虑了原始函数能够接受 "table_name.field_name" 条目以及仅接受字段名称的能力

function mysqli_result($res, $row, $field=0) {
$result->data_seek($row);
$data = $result->fetch_array();
$field_name = $field;
if ( is_string($field) ) {
$fields_array = explode(".", $field);
$array_len = count($fields_array);
if ($array_len > 1) {
$field_name = $fields_array[array_len - 1];
} else {
$field_name = $fields_array[0];
}
}

return $data[$field_name];
}
v dot teemu at gmail dot com
7 年前
我也在寻找 mysqli 的替换方法来获取第一行,而查询已知只返回 1 个值。这似乎很简单

echo(mysql_result($result, 0));

变成

echo($result->fetch_row()[0]);

或者

if ($row = $result->fetch_row()) {
echo($row[0]);
}
harmmeiier at gmail dot com
10 年前
最好提供一个将此移植到 mysqli 的简单示例,而不是一些实际上没有执行此函数功能的函数链接。
adam dot chou at gmail dot com
15 年前
如果 mysql_query 返回 0 行,则 mysql_result() 将抛出 E_WARNING。这与任何 mysql_fetch_* 函数都不一样,因此如果您在 error_reporting() 中打开了 E_WARNING,请注意这一点。您可能希望在调用 mysql_result() 之前检查 mysql_num_rows()
bruce at kaskubar dot com
13 年前
关于不应将 mysql_result 的使用与其他结果集函数混合使用的警告过于笼统。更具体地说,mysql_result 更改了结果集的内部行指针(至少在 LAMP 环境中)。这远非显而易见,因为该函数的本质是随机访问以快速获取字节。在一些 mysql_result 调用之后,在进入 mysql_fetch_array 循环之前,使用 mysql_data_seek 将使事情恢复正常。
raz0 at NOSPAM dot worldonline dot dk
20 年前
如果您想从类似以下两个查询的 MySQL 查询中获取结果...

$query = mysql_query("SELECT COUNT(*) FROM table");
$query = mysql_query("SELECT LAST_INSERT_ID()");

... 您将使用 mysql_result(),如下所示,以将输出检索为整数。

$result = mysql_result($query, 0, 0);
To Top