(PHP 8 >= 8.2.0)
mysqli::execute_query -- mysqli_execute_query — Prépare, lie les paramètres et exécute une instruction SQL
Style orienté objet
Style procédural
Prépare la requête SQL, lie les paramètres et l'exécute. La méthode mysqli::execute_query() est un raccourci pour mysqli::prepare(), mysqli_stmt::bind_param(), mysqli_stmt::execute(), et mysqli_stmt::get_result().
Le modèle de déclaration peut contenir zéro ou plusieurs marqueurs de paramètres
(?
) également appelés espaces réservés.
Les valeurs des paramètres doivent être fournies sous forme de tableau
utilisant le paramètre params
.
Une déclaration préparée est créée sous le capot, mais elle n'est jamais exposée en dehors de la fonction. Il est impossible d'accéder aux propriétés de la déclaration comme on le ferait avec l'objet mysqli_stmt. En raison de cette limitation, les informations d'état sont copiées dans l'objet mysqli et sont disponibles en utilisant ses méthodes, par exemple mysqli_affected_rows() ou mysqli_error().
Note:
Dans le cas où une instruction est passée à mysqli_execute_query() qui est plus longue que
max_allowed_packet
du serveur, les codes d'erreur retournés sont différents en fonction du système d'exploitation. Le comportement est le suivant :
Sur Linux renvoie un code d'erreur de 1153. Le message d'erreur signifie
réception d'un paquet plus grand que(max_allowed_packet
octetsgot a packet bigger than).max_allowed_packet
bytesSur Windows renvoie un code d'erreur de 2006. Ce message d'erreur signifie
le serveur a disparu(server has gone away).
mysql
Seulement en style procédural : Un objet mysqli retourné par la fonction mysqli_connect() ou mysqli_init().
query
La requête, sous forme de chaîne. Elle doit consister en une seule instruction SQL.
La déclaration SQL peut contenir zéro ou plusieurs marqueurs de paramètres
représentés par un point d'interrogation (?
)
aux positions appropriées.
Note:
Les marqueurs de paramètres ne sont autorisés que dans certains endroits des instructions SQL. Par exemple, ils sont autorisés dans la liste
VALUES()
d'une instructionINSERT
(pour spécifier les valeurs de colonnes pour une ligne), ou dans une comparaison avec une colonne dans une clauseWHERE
pour spécifier une valeur de comparaison. Cependant, ils ne sont pas autorisés pour les identifiants (tels que les noms de table ou de colonne).
params
Une liste optionnelle avec autant d'éléments qu'il y a de paramètres liés dans l'instruction SQL en cours d'exécution. Chaque valeur est traitée comme une chaîne de caractères.
Renvoie false
en cas d'échec. Pour les requêtes réussies qui produisent un jeu de résultats, telles que
SELECT, SHOW, DESCRIBE
ou EXPLAIN
, renvoie
un objet mysqli_result. Pour les autres requêtes réussies,
renvoie true
.
Exemple #1 Exemple de mysqli::execute_query()
Style orienté objet
<?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"]);
}
Style procédural
<?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"]);
}
Les exemples ci-dessus vont afficher quelque chose de similaire à :
Aachen (Nordrhein-Westfalen) Augsburg (Baijeri) Bergisch Gladbach (Nordrhein-Westfalen) Berlin (Berliini) Bielefeld (Nordrhein-Westfalen)