mysql_query
Sendet eine Anfrage an MySQL
Warnung
Diese Erweiterung ist seit PHP 5.5.0 als veraltet markiert und wurde in PHP 7.0.0 entfernt werden. 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:
Beschreibung
mixed mysql_query
( string $query
[, resource $link_identifier = NULL
] )
Parameter-Liste
-
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.
Rückgabewerte
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.
Beispiele
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);
?>
Siehe auch
- mysql_connect
- mysql_error
- mysql_real_escape_string
- mysql_result
- mysql_fetch_assoc
- mysql_unbuffered_query