Forum und email

mysql_query

(PHP 4, PHP 5, PECL mysql:1.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. Das Ergebnis der Anfrage wird gepuffert.

Hinweis: 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:

Example#1 mysql_query() Beispiel

<?php
$result 
mysql_query('SELECT * WHERE 1=1');
if (!
$result) {
    die(
'Ungültige Abfrage: ' mysql_error());
}
?>

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:

Example#2 mysql_query()

<?php
$result 
mysql_query('SELECT my_col FROM my_tbl');
if (!
$result) {
    die(
'Ungültige Abfrage: ' mysql_error());
}
?>

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