(PHP 5, PHP 7, PHP 8)
mysqli_stmt::bind_param -- mysqli_stmt_bind_param — Lie des variables à une requête MySQL
Description
Style orienté objet
public
mysqli_stmt::bind_param(string
$types
, mixed
&$var
, mixed
&...$vars
): bool
mysqli_stmt_bind_param(
mysqli_stmt
$statement
,
string
$types
,
mixed
&$var
,
mixed
&...$vars
): bool
Note:
Si la taille des données dépasse la taille maximale d'un paquet,
(max_allowed_packet
), vous devez spécifier
le caractère b
dans le paramètre
types
et utiliser la fonction
mysqli_stmt_send_long_data() pour envoyer le
message par paquets.
Note:
Vous devez être prudent lors de l'utilisation de
mysqli_stmt_bind_param() avec la fonction
call_user_func_array(). Notez que
mysqli_stmt_bind_param() nécessite que ses paramètres
soient passés par référence, alors que la fonction
call_user_func_array() peut accepter comme paramètre
une liste de variables qui peuvent représenter des références ou des valeurs.
Liste de paramètres
-
statement
-
Style procédural uniquement : Un objet mysqli_stmt
retourné par la fonction mysqli_stmt_init().
-
types
-
Une chaîne de caractères qui contient un ou plusieurs caractères
qui spécifient le type de la variable à lier :
Caractère de spécification des types
Caractère |
Description |
i |
correspond à une variable de type int |
d |
correspond à une variable de type float |
s |
correspond à une variable de type string |
b |
correspond à une variable de type BLOB, qui sera envoyé par paquets |
-
var
-
vars
-
Le nombre de variables et la longueur de la chaîne de caractères
types
doivent correspondre
aux paramètres de la requête.
Valeurs de retour
Cette fonction retourne true
en cas de succès ou false
si une erreur survient.
Erreurs / Exceptions
Si le rapport d'erreurs mysqli est activé (MYSQLI_REPORT_ERROR
) et que l'opération demandée échoue,
un avertissement est généré. Si, en plus, le mode est défini sur MYSQLI_REPORT_STRICT
,
une mysqli_sql_exception est lancée à la place.
Exemples
Exemple #1 Exemple avec mysqli_stmt::bind_param()
Style orienté objet
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
$stmt->execute();
printf("%d row inserted.\n", $stmt->affected_rows);
/* Clean up table CountryLanguage */
$mysqli->query("DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("%d row deleted.\n", $mysqli->affected_rows);
Style procédural
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'world');
$stmt = mysqli_prepare($link, "INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
mysqli_stmt_execute($stmt);
printf("%d row inserted.\n", mysqli_stmt_affected_rows($stmt));
/* Clean up table CountryLanguage */
mysqli_query($link, "DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("%d row deleted.\n", mysqli_affected_rows($link));
Les exemples ci-dessus vont afficher :
1 row inserted.
1 row deleted.
Exemple #2 Using ...
to provide arguments
The ...
operator can be used to provide variable-length
argument list, e.g. in a WHERE IN
clause.
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$stmt = $mysqli->prepare("SELECT Language FROM CountryLanguage WHERE CountryCode IN (?, ?)");
/* Using ... to provide arguments */
$stmt->bind_param('ss', ...['DEU', 'POL']);
$stmt->execute();
$stmt->store_result();
printf("%d rows found.\n", $stmt->num_rows());
Les exemples ci-dessus vont afficher :
10 rows found.
Voir aussi
- mysqli-stmt_bind_result() - Lie des variables à un jeu de résultats
- mysqli-stmt_execute() - Exécute une requête préparée
- mysqli-stmt_fetch() - Lit des résultats depuis une requête MySQL préparée dans des variables liées
- mysqli_prepare() - Prépare une requête SQL pour l'exécution
- mysqli-stmt_send_long_data() - Envoie des données MySQL par paquets
- mysqli_stmt_errno() - Retourne un code erreur pour la dernière requête
- mysqli_stmt_error() - Retourne une description de la dernière erreur de traitement