mysqli::execute_query
mysqli_execute_query
(PHP 8 >= 8.2.0)
mysqli::execute_query -- mysqli_execute_query — Prépare, lie les paramètres et exécute une instruction SQL
Description
Style orienté objet
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 octets
(got a packet bigger than
max_allowed_packet bytes
).
-
Sur Windows renvoie un code d'erreur de 2006.
Ce message d'erreur signifie le serveur a disparu
(server has gone away
).
Liste de paramètres
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 instruction
INSERT (pour spécifier les valeurs de colonnes pour une ligne), ou dans une
comparaison avec une colonne dans une clause WHERE 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.
Valeurs de retour
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.
Exemples
Exemple #1 Exemple de mysqli::execute_query()
<?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"]);
}
Les exemples ci-dessus vont afficher quelque chose de similaire à :
Aachen (Nordrhein-Westfalen)
Augsburg (Baijeri)
Bergisch Gladbach (Nordrhein-Westfalen)
Berlin (Berliini)
Bielefeld (Nordrhein-Westfalen)