PHP Doku:: Liefert Ergebnis - function.mysql-result.html

Verlauf / Chronik / History: (2) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzDatenbankerweiterungenAnbieterspezifische DatenbankerweiterungenMySQLMySQL Funktionenmysql_result

Ein Service von Reinhard Neidl - Webprogrammierung.

MySQL Funktionen

<<mysql_real_escape_string

mysql_select_db>>

mysql_result

(PHP 4, PHP 5)

mysql_resultLiefert Ergebnis

Beschreibung

mixed mysql_result ( resource $Ergebnis-Kennung , int $Datensatz [, mixed $Feld ] )

mysql_result() liefert den Inhalt eines Felds aus einem Anfrageergebnis. Das Argument Feld kann der Feldname, der Feldoffset ein Bezeichner in der Form 'Tabellenname.Feldname.' sein. Wenn das Feld einen Alias besitzt ('select foo as bar from...') muss der Alias anstatt des Feldnamens verwendet werden.

Wenn auf Anfrageergebnisse mit vielen Datensätzen zugegriffen werden soll, sollten Sie Funktionen, die auf ganze Datensätze zugreifen,in Betracht ziehen (siehe unten). Diese Funktionen liefern bei einem einzigen Aufruf den Inhalt mehrerer Felder und sind aus diesem Grund SEHR viel schneller als mysql_result(). Beachten Sie auch, dass die Angabe eines numerischen Offsets für ein Feld sehr viel schneller ist als die Angabe eines Feldnamens oder tabellenname.feldname.

Aufrufe von mysql_result() sollten nicht mit Aufrufen anderer Funktionen verschachtelt werden, die auch auf das Ergebnis zugreifen.

Beispiel #1 mysql_result() example

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

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

echo 
mysql_result($result2); // 

mysql_close($link);
?>
<?php
$link 
mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
    die(
'Keine Verbindung möglich: ' mysql_error());
}
$result mysql_query('SELECT name FROM work.employee');
if (!
$result) {
    die(
'Abfrage fehlgeschlagen:' mysql_error());
}
echo 
mysql_result($result2); // gibt den Namen des dritten Angestellten aus

mysql_close($link);
?>

Empfohlende, leistungsfähigere Alternativen: mysql_fetch_row(), mysql_fetch_array(), mysql_fetch_assoc() und mysql_fetch_object().


7 BenutzerBeiträge:
- Beiträge aktualisieren...
DJK
6.10.2009 23:00
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
6.10.2008 23: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()
kg6ypi at remotehams dot com
2.05.2008 2:54
//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
11.05.2007 21:08
<?
$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
12.09.2006 13:18
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");
?>
gack at bar dot foo
18.07.2006 16:42
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, $i, 0);
 if (
$x = mysql_result($result, $i+1, 0)) {
  echo
"It's the same thing!";
 }
}
?>
raz0 at NOSPAM dot worldonline dot dk
23.08.2003 19: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);



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)