略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: mysql_result

2024-04-27

mysql_result

(PHP 4, PHP 5)

mysql_result取得结果数据

说明

mysql_result(resource $result, int $row, mixed $field = ?): mixed

mysql_result() 返回 MySQL 结果集中一个单元的内容。字段参数可以是字段的偏移量或者字段名,或者是字段表点字段名(tablename.fieldname)。如果给列起了别名('select foo as bar from...'),则用别名替代列名。

当作用于很大的结果集时,应该考虑使用能够取得整行的函数(在下边指出)。这些函数在一次函数调用中返回了多个单元的内容,比 mysql_result() 快得多。此外注意在字段参数中指定数字偏移量比指定字段名或者 tablename.fieldname 要快得多。

调用 mysql_result() 不能和其它处理结果集的函数混合调用。

示例 #1 mysql_result() 例子

<?php
    $link 
mysql_connect("localhost""mysql_user""mysql_password")
            or die(
"Could not connect: " mysql_error());

    
$result mysql_query("SELECT name FROM work.employee")
            or die(
"Could not query: . mysql_error());

    echo mysql_result(
$result,2); // outputs third employee's name

    mysql_close(
$link);
?>

推荐使用高性能的替代函数:mysql_fetch_row()mysql_fetch_array()mysql_fetch_assoc()mysql_fetch_object()

add a noteadd a note

User Contributed Notes 7 notes

up
21
freedman at FreeFormIT dot com
7 years ago
here's a rough replacement using 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];
    }
}
up
2
bob dot schuon at loungelizard dot com
2 years ago
This function accounts for the ability of the original function to accept "table_name.field_name" entries as well as just the 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];
}
up
-2
v dot teemu at gmail dot com
5 years ago
I was also looking for mysqli replacement for getting first row, when query is known to return just 1 value. It seems this is simple:

echo(mysql_result($result, 0));

becomes

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

alternatively

if ($row = $result->fetch_row()) {
  echo($row[0]);
}
up
-7
adam dot chou at gmail dot com
13 years ago
mysql_result() will throw E_WARNING if mysql_query returns 0 rows. This is unlike any of the mysql_fetch_* functions so be careful of this if you have E_WARNING turned on in error_reporting(). You might want to check mysql_num_rows() before calling mysql_result()
up
-10
harmmeiier at gmail dot com
8 years ago
An example of how to easily port this to mysqli would be nice instead of some links to functions that don't really do what this function does.
up
-22
bruce at kaskubar dot com
11 years ago
The warning against mixing the use of mysql_result with other result set functions is a bit generic. More specifically, mysql_result alters the result set's internal row pointer (at least in a LAMP environment). This is anything but obvious as the nature of the function is random access for grabbing a quick byte. Using mysql_data_seek after some mysql_result calls, before going into a mysql_fetch_array loop, will set things straight.
up
-23
raz0 at NOSPAM dot worldonline dot dk
18 years ago
If you want to fetch the result from a mysql query similar to one of these two queries...

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

... you would use mysql_result() like shown below to retrieve the output as an int.

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

官方地址:https://www.php.net/manual/en/function.mysql-result.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3