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:

  • mysqli_query
  • PDO::query

Beschreibung

mixed mysql_query ( string $query [, resource $link_identifier = NULL ] )

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.

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