Function.mysql-query
Aus PHP-Wiki
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:
Beispiel #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:
Beispiel #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().