Maison > développement back-end > Problème PHP > A quoi sert php Prepare

A quoi sert php Prepare

藏色散人
Libérer: 2023-03-14 22:40:01
original
2906 Les gens l'ont consulté

En php, "PDO::prepare" signifie préparer une instruction à exécuter et renvoyer un objet d'instruction. Sa syntaxe d'utilisation est telle que "public PDO::prepare(string $statement, array $driver_options = array())" .

A quoi sert php Prepare

L'environnement d'exploitation de cet article : système Windows 7, version PHP 8, ordinateur DELL G3

À quoi sert php Prepare ?

PDO::prepare

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PHP 8,PECL pdo >= 0.1.0)

PDO::prepare — Préparer l'instruction d'exécution , et renvoie l'objet instruction

Description

public PDO::prepare(string $statement, array $driver_options = array()): PDOStatement
Copier après la connexion

Prépare l'instruction SQL à exécuter pour la méthode PDOStatement::execute(). Un modèle d'instruction peut contenir zéro ou plusieurs marqueurs d'espace réservé de paramètre sous la forme de noms (:name) ou de points d'interrogation (?), qui seront remplacés par des données réelles lors de son exécution. Dans le même modèle d'instruction, le formulaire nommé et le formulaire point d'interrogation ne peuvent pas être utilisés en même temps ; un seul des formulaires paramètres peut être sélectionné. Veuillez utiliser le formulaire de paramètres pour lier les données saisies par l'utilisateur et ne pas insérer directement de chaînes dans la requête.

Lors de l'appel de PDOStatement::execute(), la marque d'espace réservé du paramètre de chaque valeur doit avoir un nom unique. Sauf si le mode simulation est activé, les paramètres portant le même nom ne peuvent pas être utilisés dans la même instruction.

Remarque :

Les espaces réservés aux paramètres ne peuvent afficher que littéralement des données complètes. Il ne peut pas faire partie d'un littéral, d'un mot-clé, d'un identifiant ou de toute autre portée arbitraire. Par exemple : vous ne pouvez pas lier plusieurs valeurs à un seul paramètre, puis utiliser la requête IN() dans l'instruction SQL.

Si vous appelez la même instruction SQL plusieurs fois via PDO::prepare() et PDOStatement::execute() avec des paramètres différents, les performances de l'application seront améliorées - le pilote peut permettre au client/serveur de mettre en cache la requête et les méta-informations. Dans le même temps, appeler PDO::prepare() et PDOStatement::execute() peut également empêcher les attaques par injection SQL sans citer ni échapper manuellement les paramètres.

Si le pilote intégré ne prend pas en charge les paramètres, PDO simulera la fonction des paramètres ; si le pilote ne prend en charge qu'un des styles (paramètres nommés et paramètres de point d'interrogation), il sera automatiquement réécrit dans l'autre style. Le paramètre

注意: The parser used for emulated prepared statements and for rewriting named or question mark style parameters supports the non standard backslash escapes for single- and double quotes. That means that terminating quotes immediately preceeded by a backslash are not recognized as such, which may result in wrong detection of parameters causing the prepared statement to fail when it is executed. A work-around is to not use emulated prepares for such SQL queries, and to avoid rewriting of parameters by using a parameter style which is natively supported by the driver.
Copier après la connexion

statement

doit être un modèle d'instruction SQL valide pour le serveur de base de données cible. Le tableau

driver_options

contient une ou plusieurs paires clé-valeur clé=>valeur pour définir les propriétés de l'objet PDOStatement renvoyé. L'usage courant est le suivant : définir PDO::ATTR_CURSOR sur PDO::CURSOR_SCROLL obtiendra un curseur déroulant. Certains pilotes disposent d'options au niveau du pilote qui sont définies lors de la préparation.

Valeur de retour

Si le serveur de base de données termine la préparation de l'instruction, PDO::prepare() renvoie un objet PDOStatement. Si le serveur de base de données ne peut pas préparer l'instruction, PDO::prepare() renvoie false ou renvoie PDOException (selon le gestionnaire d'erreurs).

Remarque :

L'instruction prepare en mode simulation n'interagit pas avec le serveur de base de données, donc PDO::prepare() ne vérifiera pas l'instruction.

Exemple

Exemple n°1 de modèle d'instruction SQL sous forme de paramètre nommé

<?php
/* 传入数组的值,并执行准备好的语句 */
$sql = &#39;SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour&#39;;
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(&#39;:calories&#39; => 150, &#39;:colour&#39; => &#39;red&#39;));
$red = $sth->fetchAll();
$sth->execute(array(&#39;:calories&#39; => 175, &#39;:colour&#39; => &#39;yellow&#39;));
$yellow = $sth->fetchAll();
?>
Copier après la connexion

Exemple n°2 de modèle d'instruction SQL sous forme de point d'interrogation

<?php
/* 传入数组的值,并执行准备好的语句 */
$sth = $dbh->prepare(&#39;SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?&#39;);
$sth->execute(array(150, &#39;red&#39;));
$red = $sth->fetchAll();
$sth->execute(array(175, &#39;yellow&#39;));
$yellow = $sth->fetchAll();
?>
Copier après la connexion

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal