PHP Handbuch
Zurück |  | Nach vorne

# mysql_query

(PHP 3 <= 3.0.18, PHP 4 >= 4.0.0)

mysql_query -- Sendet eine Anfrage an MySQL

## Beschreibung

``resource mysql_query` (string Anfrage, resource [Verbindungs-Kennung])`

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.

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

Nur für SELECT 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 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_pconnect | Nach oben | mysql_unbuffered_query