PHP Unconference Europe 2015

mysql_result

(PHP 4, PHP 5)

mysql_resultObtener datos de resultado

Advertencia

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro. En su lugar, deberían usarse las extensiones MySQLi o PDO_MySQL. Véase también la guía MySQL: elegir una API y P+F relacionadas para más información. Las alternativas a esta función incluyen:

Descripción

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

Recupera el contenido de una celda de un conjunto de resultados de MySQL.

Cuando se esté trabajando con conjuntos de resultados grandes, se debería considerar usar una de las funciones que obtienen una fila completa (especificadas más abajo). Debido a que estas funciones retornan el contenido de múltiples celdas en una única llamada a función, son MUCHO MÁS rápidas que mysql_result(). Además, se ha de tener en cuenta que la especificación de un índice numérico para el campo pasado como argumento es mucho más rápido que especificar un nombre de campo o el argumento nombre_tabla.nombre_campo.

Parámetros

result

El resultado resource que está siendo evaluado. Este resultado proviene de una llamada a mysql_query().

row

El número de fila del conjunto de resultados que está siendo recuperado. El número de filas empieza a partir de 0.

field

El nombre o el índice del campo que está siendo recuperado.

Puede ser el índice del campo, el nombre del campo, o el nombre de la tabla punto nombre del campo (nombre_tabla.nombre_campo). Si se ha utilizado un alias para el nombre de la columna ('select foo as bar from...'), utilice el alias en lugar del nombre del campo. Si no está definido, se recuperará el primer campo.

Valores devueltos

El contenido de una celda de un conjunto de resultados de MySQL en caso de éxito, o FALSE en caso de fallo.

Ejemplos

Ejemplo #1 Ejemplo de mysql_result()

<?php
$enlace 
mysql_connect('anfitrión_mysql''usuario_mysql''contraseña_mysql');
if (!
$enlace) {
    die(
'No se pudo conectar: ' mysql_error());
}
if (!
mysql_select_db('nombre_base_datos')) {
    die(
'No se pudo seleccionar la base de datos: ' mysql_error());
}
$resultado mysql_query('SELECT name FROM work.employee');
if (!
$resultado) {
    die(
'No se pudo consultar:' mysql_error());
}
echo 
mysql_result($resultado2); // imprime el nombre del tercer empleado

mysql_close($enlace);
?>

Notas

Nota:

Las llamadas a mysql_result() no deberían ser mezcladas con llamadas a otras funciones que manejen conjuntos de resultados.

Ver también

add a note add a note

User Contributed Notes 7 notes

up
6
djurredenboer at hotmail dot com
7 years ago
<?
$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
?>
up
4
adam dot chou at gmail dot com
6 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
4
raz0 at NOSPAM dot worldonline dot dk
11 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);
up
1
harmmeiier at gmail dot com
4 months 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
0
bruce at kaskubar dot com
3 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
0
DJK
5 years ago
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.
up
-3
erelsgl dot NOSPAM at cs dot technion dot ac dot il
8 years ago
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($values, mysql_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");
?>
To Top