Manuel PHP
Précédent |  | Suivant

# mysqli_prepare

(PHP 5)

mysqli_prepare

(no version information, might be only in CVS)

mysqli->prepare -- Prépare une requête SQL pour l'exécution

## Description

Style procédural

mysqli_stmt mysqli_prepare ( mysqli link, string query )

Style orienté objet (méthode)

class mysqli {
mysqli_stmt prepare ( string query )
}

mysqli_prepare() prépare la requête SQL query et retourne une ressource à utiliser pour les futures opérations sur le traitement. La requête doit être une requête SQL unique.

> Note : Vous ne devez pas ajouter de point virgule ou de \g dans la requête.

Le paramètre query 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 certaines 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 (comme les noms de tables ou de colonnes), dans une liste de sélection où les noms des colonnes doivent être retournés par une requête SELECT, ou pour spécifier un opérateur tel que le signe égal (=). La dernière restriction est nécessaire car il est impossible de déterminer le type de paramètre. Il n'est pas non plus autorisé de comparer les marqueurs avec NULL par ? IS NULL. En général, les paramètres ne sont autorisés que dans les requêtes DML (Data Manipulation Language) et non dans les requêtes DDL (Data Defination Language).

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.

## Valeurs de retour

mysqli_prepare() retourne un objet de traitement ou `FALSE` si une erreur survient.

## Exemples

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("Echec 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 paramètres de marques */
$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();
?>`

Exemple 2. Style procédural

`<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* Vérification de la connexion */
if (mysqli_connect_errno()) {
printf("Echec 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 paramètres de marques */
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);
?>`

L'exemple ci-dessus va afficher :

    Amersfoort est dans le district de Utrecht

## Voir aussi

mysqli_stmt_execute(), mysqli_stmt_fetch(), mysqli_stmt_bind_param(), mysqli_stmt_bind_result() et mysqli_stmt_close().

Précédent | Sommaire | Suivant
mysqli_ping | Niveau supérieur | mysqli_query