(PHP 5, PHP 7)
mysqli_stmt::bind_param -- mysqli_stmt_bind_param — Lie des variables à une requête MySQL
Style orienté objet
Style procédural
Sert à lier des variables à une requête MySQL préparée par mysqli_prepare().
Note:
Si la taille des données dépasse la taille maximal 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.
stmt
Style procédural uniquement : Un identifiant de requête 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 entier |
d | correspond à une variable de type nombre décimal |
s | correspond à une variable de type chaîne de caractères |
b | correspond à une variable de type BLOB, qui sera envoyé par paquets |
var1
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.
Exemple #1 Style orienté objet
<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
/* Vérification de la connexion */
if (mysqli_connect_errno()) {
printf("Échec de la connexion : %s\n", mysqli_connect_error());
exit();
}
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
/* Exécution de la requête */
$stmt->execute();
printf("%d ligne insérée.\n", $stmt->affected_rows);
/* Fermeture du traitement */
$stmt->close();
/* Nettoyage de la table CountryLanguage */
$mysqli->query("DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("%d ligne effacée.\n", $mysqli->affected_rows);
/* Fermeture de la connexion */
$mysqli->close();
?>
Exemple #2 Style procédural
<?php
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'world');
/* Vérification de la connexion */
if (!$link) {
printf("Échec de la connexion : %s\n", mysqli_connect_error());
exit();
}
$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;
/* Exécution de la requête */
mysqli_stmt_execute($stmt);
printf("%d ligne insérée.\n", mysqli_stmt_affected_rows($stmt));
/* Fermeture du traitement */
mysqli_stmt_close($stmt);
/* Nettoyage de la table CountryLanguage */
mysqli_query($link, "DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("%d ligne effacée.\n", mysqli_affected_rows($link));
/* Fermeture de la connexion */
mysqli_close($link);
?>
L'exemple ci-dessus va afficher :
1 ligne insérée. 1 ligne effacée.