MySQL 函数
在线手册:中文  英文

mysql_result

(PHP 4, PHP 5)

mysql_result取得结果数据

说明

mixed mysql_result ( resource $result , int $row [, mixed $field ] )

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


MySQL 函数
在线手册:中文  英文

用户评论:

bruce at kaskubar dot com (2011-04-29 06:30:02)

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.

DJK (2009-10-06 14:00:12)

Note that mysql_result affects the internal pointer used by mysql_fetch_*

<?php
$res 
mysql_query('SELECT a,b FROM ab');
echo 
mysql_result($res,0,0);
print_r(mysql_fetch_assoc($res));
?>

In the above example, the call to mysql_fetch_assoc would return the SECOND result, not the first as (I) expected.

Use mysql_data_seek($res,0) to reset the result set.

adam dot chou at gmail dot com (2008-10-06 14:49:54)

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

kg6ypi at remotehams dot com (2008-05-01 17:54:33)

//updated error handling for mysql_evaluate
function mysql_evaluate($query, $default_value=0) {
if (!$result=mysql_query($query)) {
return 0;
}

if (mysql_num_rows($result)==0)
return $default_value;
else
return mysql_result($result,0);
}
// same applies for the mysql_evaluate_array() function

djurredenboer at hotmail dot com (2007-05-11 12:08:41)

<?
$link = mysql_connect("host", "user", "passw");
mysql_select_db("database", $link);
$number = 3;
$insert = mysql_query("SELECT `test1`.*, `test2`.*, 
FROM `test1`, `test2`, `
WHERE ((`test1`.`author` = `test2`.`ID`) AND (`test2`.`ID` ='$number'))
ORDER BY `toetsen`.`autoID` DESC",$link);

 
 
 
 echo mysql_result( $insert , 0, 'test1.question') ;

#here he echoes the questions the stuff out of the first table 
 
echo mysql_result( $insert , 0, 'test2.name') ;

#here he echoes the questions the stuff out of the second table 
?>

erelsgl dot NOSPAM at cs dot technion dot ac dot il (2006-09-12 04:18:22)

two simple but very useful functions, for converting a query to a value or an array:

<?php
function mysql_evaluate($query$default_value="undefined") {
    
$result mysql_query($query);
    if (
mysql_num_rows($result)==0)
        return 
$default_value;
    else
        return 
mysql_result($result,0);
}

function 
mysql_evaluate_array($query) {
    
$result mysql_query($query);
    
$values = array();
    for (
$i=0$i<mysql_num_rows($result); ++$i)
        
array_push($valuesmysql_result($result,$i));
    return 
$values;
}
?>

http://tora.us.fm/_script/highlight.php?file=sql

Usage examples:

<?php
 $customer_count 
mysql_evaluate("SELECT COUNT(*) FROM customers");
 
$customer_names mysql_evaluate_array("SELECT name FROM customers");

$customer_type mysql_evaluate("SELECT type FROM customers WHERE name='$name'""DEFAULT_TYPE");
?>

gack at bar dot foo (2006-07-18 07:42:24)

if you want to do something based on the fact that the data is the same in the next row, then looking ahead is easy with this.

<?php
$i
=0;
$rows=mysql_num_rows($result);
while(
$i $rows) {
 
$x mysql_result($result$i0);
 if (
$x mysql_result($result$i+10)) {
  echo 
"It's the same thing!";
 }
}
?>

raz0 at NOSPAM dot worldonline dot dk (2003-08-23 10:42:47)

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);

易百教程