PHP 8.4.0 RC4 available for testing

mysqli::execute_query

mysqli_execute_query

(PHP 8 >= 8.2.0)

mysqli::execute_query -- mysqli_execute_queryPrépare, lie les paramètres et exécute une instruction SQL

Description

Style orienté objet

public mysqli::execute_query(string $query, ?array $params = null): mysqli_result|bool

Style procédural

mysqli_execute_query(mysqli $mysql, string $query, ?array $params = null): mysqli_result|bool

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 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()

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)

Voir aussi

add a note

User Contributed Notes 1 note

up
1
theking2(at)king(dot).co.
10 months ago
A function to call a stored procedure with an arbitrary number of IN parameters and one OUT parameter, for instance returning affected row count. The return value of yhe function is this value.

<?php

/**
* call_sp Call the specified stored procedure with the given parameters.
* The first parameter is the name of the stored procedure.
* The remaining parameters are the (in) parameters to the stored procedure.
* the last (out) parameter should be an int, like state or number of affected rows.
*
* @param mixed $sp_name The name of the stored procedure to call.
* @param mixed $params The parameters to pass to the stored procedure.
* @return int The number of affected rows.
*/
function call_sp( \mysqli $db, string $sp_name, ...$params ): int
{
$sql = "CALL $sp_name( ";
$sql .= implode( ", ", array_fill( 0, count( $params ), "?" ) );
$sql .= ", @__affected );";

$result = $db->execute_query( $sql, $params );
$result = $db->query( "select @__affected;" );
$affected = (int) $result->fetch_column( 0 );
return
$affected;
}
To Top