Sendet eine Abfrage an MySQL

# mysql_query

(PHP 4, PHP 5)

mysql_query — Sendet eine Abfrage an MySQL

Warnung

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 bietet der Ratgeber MySQL: Auswahl einer API. Alternativen zu dieser Funktion umfassen:

- mysqli_query()
- PDO::query()

### Beschreibung

function mysql_query(string `$query`, resource `$link_identifier` = NULL): mixed

mysql_query() sendet eine einzelne Abfrage (mehrere Abfragen werden nicht unterstützt) zur momentan aktiven Datenbank auf dem Server, die mit der übergebenen Verbindungskennung `link_identifier` verknüpft ist.

### Parameter-Liste

`query`
  Eine SQL-Anweisung. Die Anweisung sollte nicht mit einem Semikolon abgeschlossen werden. Werte innerhalb der Abfrage sollten korrekt maskiert werden.
`link_identifier`

  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() bei Erfolg eine Ressource zurück, oder `false` bei einem Fehler.

Für alle anderen von SQL-Anweisungen wie INSERT, UPDATE, DELETE, DROP, etc, gibt mysql_query() bei Erfolg `true` zurück oder `false` bei einem Fehler.

Die zurückgegebene Ergebnisressource sollte an mysql_fetch_array() oder andere Funktionen, die mit Ergebnis Tabellen umgehen, übergeben werden, um auf die erhaltenen Daten zuzugreifen.

Verwenden sie mysql_num_rows() um zu erfahren, wieviele Datensätze für eine SELECT-Anweisung zurückgegeben wurden, oder mysql_affected_rows() um zu erfahren, wieviele Datensätze von einer DELETE-, INSERT-, REPLACE- oder UPDATE-Anweisung betroffen waren.

mysql_query() wird ebenfalls fehlschlagen und `false` zurückgeben, wenn der Benutzer nicht die Rechte hat, auf die Tabellen, die in der Anweisung referenziert wurden, zuzugreifen.

### Beispiele

Beispiel #1 Ungültige Anfrage

Die folgende Abfrage ist syntaktisch falsch, deshalb gibt mysql_query() `false` zurück:

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

    ?>

Beispiel #2 Gültige Anfrage

Die folgende Abfrage ist gültig, daher gibt mysql_query() eine Ressource zurück.

    <?php
    // Dies könnte z. B. durch einen Benutzer 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);
    }

    // Verwende Ergebnis
    // Der Versuch $result auszugeben, erlaubt keine Zugriff auf die Informationen
    // der Ressource.
    // Eine der MySQL-result-Funktionen muss verwendet 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 Skripts automatisch
    mysql_free_result($result);
    ?>

### Siehe auch

- mysql_connect() - Öffnet eine Verbindung zu einem MySQL-Server
- mysql_error() - Liefert den Fehlertext der zuvor ausgeführten MySQL-Operation
- mysql_real_escape_string() - Maskiert spezielle Zeichen innerhalb einer Zeichenkette für die Verwendung in einer SQL-Anweisung
- mysql_result() - Liefert eine Spalte aus einem MySQL-Ergebnis
- mysql_fetch_assoc() - Liefert einen Datensatz als assoziatives Array
- mysql_unbuffered_query() - Sendet eine SQL-Anfrage an MySQL, ohne Ergebniszeilen abzuholen und zu puffern

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open