(PHP 5, PHP 7, PHP 8)
mysqli::prepare -- mysqli_prepare — Prépare une requête SQL pour l'exécution
Description
Style orienté objet
public
mysqli::prepare(string
$query
): mysqli_stmt|false
mysqli_prepare(mysqli
$mysql
, string
$query
): mysqli_stmt|false
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.
Liste de paramètres
-
mysql
-
Seulement en style procédural : Un objet mysqli
retourné par la fonction mysqli_connect() ou par la
fonction 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ête
INSERT
(pour spécifier les valeurs des colonnes pour une ligne),
ou dans une comparaison d'une clause WHERE
pour spécifier une
valeur de comparaison.
Cependant, elles ne sont pas autorisées pour les identifiants
(de tables ou de colonnes).
Valeurs de retour
mysqli_prepare() retourne un objet de traitement 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::prepare()
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();
}
$city = "Amersfoort";
/* Crée une requête préparée */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
/* Lecture des marqueurs */
$stmt->bind_param("s", $city);
/* Exécution de la requête */
$stmt->execute();
/* Lecture des variables résultantes */
$stmt->bind_result($district);
/* Récupération des valeurs */
$stmt->fetch();
printf("%s est dans le district de %s\n", $city, $district);
/* Fermeture du traitement */
$stmt->close();
}
/* Fermeture de la connexion */
$mysqli->close();
?>
Style procédural
<?php
$link = mysqli_connect("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();
}
$city = "Amersfoort";
/* Crée une requête préparée */
if ($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?")) {
/* Lecture des marqueurs */
mysqli_stmt_bind_param($stmt, "s", $city);
/* Exécution de la requête */
mysqli_stmt_execute($stmt);
/* Lecture des variables résultantes */
mysqli_stmt_bind_result($stmt, $district);
/* Récupération des valeurs */
mysqli_stmt_fetch($stmt);
printf("%s est dans le district de %s\n", $city, $district);
/* Fermeture du traitement */
mysqli_stmt_close($stmt);
}
/* Fermeture de la connexion */
mysqli_close($link);
?>
Les exemples ci-dessus vont afficher :
Amersfoort est dans le district de Utrecht
Voir aussi