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() 不能和其它处理结果集的函数混合调用。

Example #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()

User Contributed Notes

bob dot schuon at loungelizard dot com 22-Nov-2019 05:32
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];
}
v dot teemu at gmail dot com 06-Sep-2016 06:18
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]);
}
freedman at FreeFormIT dot com 08-Feb-2015 10:08
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];
    }
}
harmmeiier at gmail dot com 11-Jun-2014 03:30
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.
bruce at kaskubar dot com 29-Apr-2011 06:30
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.
adam dot chou at gmail dot com 06-Oct-2008 02:49
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()
raz0 at NOSPAM dot worldonline dot dk 23-Aug-2003 10:42
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);