(PHP 5, PHP 7, PHP 8)
mysqli_stmt::bind_param -- mysqli_stmt_bind_param — Lie des variables à une requête MySQL
Style orienté objet
Style procédural
Lie les variables pour les marqueurs de paramètre dans la requête préparé par mysqli_prepare() ou mysqli_stmt_prepare().
Note:
Si la taille des données dépasse la taille maximale d'un paquet, (
max_allowed_packet
), vous devez spécifier le caractèreb
dans le paramètretypes
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.
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 | 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.
Cette fonction retourne true
en cas de succès ou false
si une erreur survient.
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.
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.