(PHP 4, PHP 5)
mysql_query — Sendet eine Anfrage an MySQL
Diese Erweiterung ist seit PHP 5.5.0 als veraltet markiert und wurde in PHP 7.0.0 entfernt. Verwenden Sie stattdessen die Erweiterungen MySQLi oder PDO_MySQL. Weitere Informationen finden Sie im Ratgeber MySQL: Auswahl einer API und den zugehörigen FAQ. Alternativen zu dieser Funktion umfassen:
mysql_query() sendet eine einzelne Abfrage (mehrere
Abfragen werden nicht unterstützt) zu dem momentan aktiven Schema auf dem
Server, der mit der übergebenen
Verbindungs-Kennung Verbindungs-Kennung
assoziiert ist.
query
Eine SQL Anweisung
Die Anweisung sollte nicht mit einem Semikolon abgeschlossen werden. Werte innerhalb der Abfrage sollten korrekt maskiert werden.
Verbindungs-Kennung
Die MySQL-Verbindung.
Wird die Verbindungskennung nicht angegeben, wird die letzte durch
mysql_connect() geöffnete Verbindung angenommen. Falls
keine solche Verbindung gefunden wird, wird versucht, eine Verbindung
aufzubauen, wie es beim Aufruf von mysql_connect() ohne
Angabe von Argumenten der Fall wäre. Falls zufällig keine Verbindung gefunden
oder aufgebaut werden kann, wird eine Warnung der Stufe
E_WARNING
erzeugt.
Für SELECT, SHOW, DESCRIBE, EXPLAIN und andere Anweisungen, die eine
Ergebnismenge zurückgeben, gibt mysql_query()
eine Kennung resource bei Erfolg zurück oder FALSE
bei
Fehlern.
Für alle anderen von SQL Anweisungen wie INSERT, UPDATE, DELETE, DROP, etc,
gibt mysql_query() TRUE
bei Erfolg zurück oder FALSE
bei Fehlern.
Die zurückgegebene Ergebnis Ressource sollte an mysql_fetch_array() oder andere Funktionen, die mit Ergebnis Tabellen umgehen, übergeben werden, um auf die erhaltenen Daten zuzuzugreifen.
Nutzen sie mysql_num_rows() um zu erfahren, wieviele Zeilen für eine SELECT Anweisungen zurückgegeben wurden oder mysql_affected_rows() um zu erfahren, wieviele Zeilen von einer DELETE, INSERT, REPLACE oder UPDATE Anweisung betroffen waren.
mysql_query() wird ebenfalls fehlschlagen und FALSE
zurückgeben, wenn der Nutzer nicht die Rechte hat, auf die Tabellen, die in
der Anweisung referenziert wurden, zuzugreifen.
Beispiel #1 Ungültige Anfrage
Die folgende Anfrage ist syntaktisch falsch, deshalb liefert
mysql_query() FALSE
zurück:
<?php
$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
die('Ungültige Anfrage: ' . mysql_error());
}
?>
Beispiel #2 Gültige Anfrage
Die folgende Abfrage ist gültig, daher gibt mysql_query() ein Ergebnis resource zurück.
<?php
// Dies können Sie z.B. durch einen Nutzer angegeben werden
$firstname = 'fred';
$lastname = 'fox';
// Formuliere Abfrage
// Dies ist die beste Art, eine SQL Abfrage durchzuführen
// Für weitere Beispiele, siehe: mysql_real_escape_string()
$query = sprintf("SELECT firstname, lastname, address, age FROM friends
WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));
// Führe Abfrage aus
$result = mysql_query($query);
// Prüfe Ergebnis
// Dies zeigt die tatsächliche Abfrage, die an MySQL gesandt wurde und den
// Fehler. Nützlich bei der Fehlersuche
if (!$result) {
$message = 'Ungültige Abfrage: ' . mysql_error() . "\n";
$message .= 'Gesamte Abfrage: ' . $query;
die($message);
}
// Nutze Ergebnis
// Der Versuch $result auszugeben, erlaubt keine Zugriff auf die Informationen
// der Ressource.
// Eine der MySQL result Funktionen muss genutzt werden
// Siehe auch: mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}
// Gebe Ressourcen, die mit der Ergebnismenge assoziiert sind, frei
// Dies geschieht am Ende eines Skriptes automatisch
mysql_free_result($result);
?>