Maison >développement back-end >Problème PHP >Comment utiliser prerare en php

Comment utiliser prerare en php

小老鼠
小老鼠original
2023-05-10 17:15:241525parcourir

L'utilisation de prerare en php est "PDO::prepare", ce qui signifie préparer l'instruction à exécuter et renvoyer l'objet d'instruction. Sa syntaxe d'utilisation est telle que "public PDO::prepare(string $statement, array $driver_options). = tableau() )".

Comment utiliser prerare en php

Le système d'exploitation de ce tutoriel : système Windows 10, PHP version 8.1.3, ordinateur Dell G3.

Utilisation de php prepare

PDO::prepare

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

PDO::prepare — Préparez l'instruction à exécuter et renvoyez l'objet d'instruction

Description

public PDO::prepare(string $statement, array $driver_options = array()): PDOStatement为 PDOStatement::execute() 方法准备待执行的 SQL 语句。 语句模板可以包含零个或多个参数占位标记,格式是命名(:name)或问号(?)的形式,当它执行时将用真实数据取代。 在同一个语句模板里,命名形式和问号形式不能同时使用;只能选择其中一种参数形式。 请用参数形式绑定用户输入的数据,不要直接字符串拼接到查询里。

Lors de l'appel de PDOStatement::execute(), la marque d'espace réservé du paramètre de chaque valeur doit être 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 IN() pour interroger une 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 méta-informations. Dans le même temps, appeler PDO::prepare() et PDOStatement::execute() peut également empêcher les attaques par injection SQL sans ajouter manuellement de guillemets ni échapper de 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.

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 l'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'interagira pas avec le serveur de base de données, donc PDO::prepare() ne vérifiera pas l'instruction.

Exemple

Exemple n°1, 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();
?>

Exemple n°2, 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();
?>

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!

Déclaration:
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