PHP Handbuch
Zurück |  | Nach vorne

# mysql_query

(PHP 3, PHP 4 )

mysql_query -- Sendet eine Anfrage an MySQL

## Beschreibung

resource mysql_query ( string Anfrage [, resource Verbindungs-Kennung [, int Ergebnis-Modus]])

mysql_query() sendet eine Anfrage an die zur Zeit aktiven Datenbank, die mit der angegebenen `Verbindungs-Kennung` assoziiert wird. Wird die `Verbindungs-Kennung` nicht angegeben, wird die zuletzt geöffnete Verbindung angenommen. Wenn keine offene Verbindung besteht, wird versucht eine Verbindung aufzubauen, wie beim Aufruf von mysql_connect() ohne Argumente und diese wird dann benutzt.

Der optionale Parameter `Ergebnis-Modus` kann MYSQL_USE_RESULT oder MYSQL_STORE_RESULT sein. Der Vorgabewert ist MYSQL_STORE_RESULT, damit wird das Ergebnis zwischengespeichert. Siehe auch mysql_unbuffered_query() für das das entgegengesetzte Verhalten.

> Anmerkung: Die Anfrage sollte nicht mit einem Semikolon enden.

Nur für SELECT, EXPLAIN, SHOW oder DESCRIBE Anweisungen liefert mysql_query() eine Ressourcen-Kennung oder `FALSE`, falls die Anfrage nicht korrekt ausgeführt wurde. Für alle anderen SQL Anweisungen ist der Rückgabewert von mysql_query() im Erfolgsfall `TRUE`, im Fehlerfall `FALSE`. Ein Rückgabewert ungleich `FALSE` bedeutet, dass die Anfrage gültig war und vom Server ausgeführt werden konnte. Das alleine sagt jedoch überhaupt nichts über die Anzahl veränderter oder gelieferter Datensätze aus. Es ist durchaus möglich, dass eine Anfrage erfolgreich war, ohne einen einzigen Datensatz zur verändern oder zu liefern.

Die folgende Anfrage ist syntaktisch falsch, deshalb liefert mysql_query() `FALSE` zurück:

Beispiel 1. mysql_query()

    <php
    $result = mysql_query ("SELECT * WHERE 1=1")
        or die ("Invalid query");
    ?>

Die folgende Anfrage ist semantisch falsch, wenn `my_col` kein Feld in der Tabelle `my_tbl` ist. Deshalb schlägt mysql_query() fehl und liefert `FALSE`:

Beispiel 2. mysql_query()

    <?php
    $result = mysql_query ("SELECT my_col FROM my_tbl")
        or die ("Invalid query");
    ?>

mysql_query() schlägt ebenso fehl und liefert `FALSE`, wenn Sie keine Berechtigung zum Zugriff auf die verwiesene(n) Tabelle(n) haben.

Angenommen eine Anfrage ist erfolgreich, dann können Sie für eine SELECT Anweisung mit mysql_num_rows() die Anzahl der gelieferten Datensätze herausfinden. Falls Sie DELETE, INSERT, REPLACE, oder UPDATE benutzt haben, können Sie die Anzahl der betroffenen Datensätze mit mysql_affected_rows() feststellen.

Nur bei SELECT, EXPLAIN, SHOW oder DESCRIBE Anweisungen liefert mysql_query() eine neue Ergebnis-Kennung, die Sie an die Funktion mysql_fetch_array() und andere Funktionen, die mit Ergebnistabellen umgehen können, übergeben können. Sind sie mit der Bearbeitung Ihrer Ergebnisse fertig, können Sie die belegten Resourcen durch den Aufruf von mysql_free_result() freigeben. Ist die Ausführung des Skripts abgeschlossen, wird der belegte Speicher automatisch freigegeben.

Siehe auch: mysql_num_rows() mysql_affected_rows(), mysql_unbuffered_query(), mysql_free_result(), mysql_fetch_array(), mysql_fetch_row(), mysql_fetch_assoc(), mysql_result(), mysql_select_db() und mysql_connect().

Zurück | Zum Anfang | Nach vorne
mysql_ping | Nach oben | mysql_real_escape_string