mysqli::execute_query
mysqli_execute_query
(PHP 8 >= 8.2.0)
mysqli::execute_query -- mysqli_execute_query — Bereitet eine SQL-Anweisung vor, bindet die Parameter und führt die Anweisung aus
Beschreibung
Objektorientierter Stil
Die Anweisungsvorlage darf null oder mehr Fragezeichen-Parametermarker
(?) - auch Platzhalter genannt - enthalten. Die
Parameterwerte müssen mit dem Parameter params als
Array angegeben werden.
Eine vorbereitete Anweisung wird im Hintergrund erstellt und ist nie
außerhalb der Funktion sichtbar. Es ist unmöglich, auf die Eigenschaften
der Anweisung zuzugreifen, wie es mit einem
mysqli_stmt-Objekt möglich wäre. Aufgrund dieser
Einschränkung werden die Statusinformationen in das
mysqli-Objekt kopiert und stehen über dessen
Methoden, z. B. mysqli_affected_rows() oder
mysqli_error(), zur Verfügung.
Hinweis:
Wenn eine Anweisung an mysqli_execute_query() übergeben
wird, die größer ist als die vom Server maximal erlaubte Paketgröße
(max_allowed_packet), hängen die zurückgegebenen
Fehlercodes vom Betriebssystem ab. Die Funktion verhält sich wie folgt:
-
Unter Linux gibt sie den Fehlercode 1153 zurück. Diese Fehlermeldung
bedeutet got a packet bigger than
max_allowed_packet bytes
.
-
Unter Windows gibt sie den Fehlercode 2006 zurück. Diese Fehlermeldung
bedeutet server has gone away
.
Parameter-Liste
-
mysql Nur bei prozeduralem Aufruf: ein von
mysqli_connect() oder mysqli_init()
zurückgegebenes mysqli-Objekt.
query
-
Die Zeichenkette mit der Abfrage. Sie darf nur eine SQL-Anweisung
enthalten.
Die SQL-Anweisung darf null oder mehr Platzhalter für Parameter
enthalten, die an den entsprechenden Stellen durch Fragezeichen
(?) dargestellt werden.
Hinweis:
Die Platzhalter sind nur an bestimmten Stellen einer SQL-Anweisung
zulässig. Zum Beispiel sind sie bei einer
INSERT-Anweisung in der
VALUES()-Liste erlaubt, um die Werte für die
Spalten einer Zeile anzugeben, oder bei einer
WHERE-Klausel im Vergleich mit einer Spalte, um
einen Vergleichswert anzugeben. Nicht zulässig sind sie hingegen für
Bezeichner (wie Tabellen- oder Spaltennamen).
params
-
Eine optionale Array-Liste mit so vielen Elementen, wie es gebundene
Parameter in der auszuführenden SQL-Anweisung gibt. Jeder Wert wird wie
eine Zeichenkette behandelt.
Rückgabewerte
Gibt bei einem Fehler false zurück. Bei erfolgreichen Abfragen, die eine
Ergebnismenge erzeugen, also z. B. SELECT, SHOW, DESCRIBE
oder EXPLAIN, wird ein
mysqli_result-Objekt zurückgegeben. Bei anderen
erfolgreichen Abfragen wird true zurückgegeben.
Beispiele
Beispiel #1 mysqli::execute_query()-Beispiel
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$query = 'SELECT Name, District FROM City WHERE CountryCode=? ORDER BY Name LIMIT 5';
$result = $mysqli->execute_query($query, ['DEU']);
foreach ($result as $row) {
printf("%s (%s)\n", $row["Name"], $row["District"]);
}
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = 'SELECT Name, District FROM City WHERE CountryCode=? ORDER BY Name LIMIT 5';
$result = mysqli_execute_query($link, $query, ['DEU']);
foreach ($result as $row) {
printf("%s (%s)\n", $row["Name"], $row["District"]);
}
Oben gezeigte Beispiele erzeugen
eine ähnliche Ausgabe wie:
Aachen (Nordrhein-Westfalen)
Augsburg (Baijeri)
Bergisch Gladbach (Nordrhein-Westfalen)
Berlin (Berliini)
Bielefeld (Nordrhein-Westfalen)