(PHP 5, PHP 7, PHP 8)
mysqli::prepare -- mysqli_prepare — Prépare une requête SQL pour l'exécution
Style orienté objet
Style procédural
Prépare la requête SQL et retourne un gestionnaire de requête à utiliser pour les futures opérations sur la requête. La requête doit être composée d'une seule requête SQL.
Les paramètres de marques doivent être liés à des variables utilisées dans les fonctions mysqli_stmt_bind_param() et/ou mysqli_stmt_bind_result() avant d'exécuter la requête ou de récupérer les lignes.
mysql
Seulement en style procédural : Un objet mysqli retourné par la fonction mysqli_connect() ou mysqli_init().
query
La requête, sous la forme d'une chaîne de caractères.
Ce paramètre peut inclure un ou plusieurs paramètres de marques dans la requête SQL avec le caractère "point d'interrogation" (?
) à la position appropriée.
Note:
Les marques sont autorisées uniquement dans certains endroits des requêtes SQL. Par exemple, elles le sont dans la liste
VALUES()
d'une requêteINSERT
(pour spécifier les valeurs des colonnes pour une ligne), ou dans une comparaison d'une clauseWHERE
pour spécifier une valeur de comparaison. Cependant, elles ne sont pas autorisées pour les identifiants (de tables ou de colonnes).
mysqli_prepare() retourne un objet de traitement 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::prepare()
Style orienté objet
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
if (mysqli_connect_errno()) {
printf("Échec de la connexion : %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
$stmt->bind_param("s", $city);
$stmt->execute();
$stmt->bind_result($district);
$stmt->fetch();
printf("%s est dans le district de %s\n", $city, $district);
$stmt->close();
}
$mysqli->close();
?>
Style procédural
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
if (mysqli_connect_errno()) {
printf("Échec de la connexion : %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
if ($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?")) {
mysqli_stmt_bind_param($stmt, "s", $city);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $district);
mysqli_stmt_fetch($stmt);
printf("%s est dans le district de %s\n", $city, $district);
mysqli_stmt_close($stmt);
}
mysqli_close($link);
?>
Les exemples ci-dessus vont afficher :
Amersfoort est dans le district de Utrecht