Maison développement back-end tutoriel php Instruction préparée par PDO Objet PDOStatement

Instruction préparée par PDO Objet PDOStatement

Jul 03, 2018 pm 04:53 PM
pdo 预处理语句

Cet article présente principalement un résumé de l'utilisation des objets PDOStatement de déclarations préparées. Cet article présente les méthodes de PDOStatement et des exemples de méthodes courantes. Les amis dans le besoin peuvent se référer à

Prise en charge de PDO pour les déclarations préparées. Vous devez utiliser l'objet de classe PDOStatement, mais cet objet de classe n'est pas instancié via le mot-clé NEW, mais est renvoyé directement après la préparation d'une instruction SQL prétraitée dans le serveur de base de données via la méthode prepare() dans l'objet PDO. Si l'objet de classe PDOStatement renvoyé par l'exécution précédente de la méthode query() dans l'objet PDO représente uniquement un objet d'ensemble de résultats. Et si l'objet de classe PDOStatement généré en exécutant la méthode prepare() dans l'objet PDO est un objet de requête, il peut définir et exécuter des commandes SQL paramétrées. Toutes les méthodes membres de la classe PDOStatement sont les suivantes :

PDOStatement::bindColumn — 绑定一列到一个 PHP 变量
PDOStatement::bindParam — 绑定一个参数到指定的变量名
PDOStatement::bindValue — 把一个值绑定到一个参数
PDOStatement::closeCursor — 关闭游标,使语句能再次被执行。
PDOStatement::columnCount — 返回结果集中的列数
PDOStatement::debugDumpParams — 打印一条 SQL 预处理命令
PDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE
PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息
PDOStatement::execute — 执行一条预处理语句
PDOStatement::fetch — 从结果集中获取下一行
PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组
PDOStatement::fetchColumn — 从结果集中的下一行返回单独的一列。
PDOStatement::fetchObject — 获取下一行并作为一个对象返回。
PDOStatement::getAttribute — 检索一个语句属性
PDOStatement::getColumnMeta — 返回结果集中一列的元数据
PDOStatement::nextRowset — 在一个多行集语句句柄中推进到下一个行集
PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数
PDOStatement::setAttribute — 设置一个语句属性
PDOStatement::setFetchMode — 为语句设置默认的获取模式。
Copier après la connexion

1. Préparer l'instruction

Exécuter à plusieurs reprises une requête SQL, en utilisant différents paramètres à chaque itération, dans dans ce cas, il est plus efficace d'utiliser des instructions préparées. Pour utiliser des instructions préparées, vous devez d'abord préparer « une instruction SQL » sur le serveur de base de données, mais il n'est pas nécessaire qu'elle soit exécutée immédiatement. PDO prend en charge l'utilisation de la syntaxe « placeholder » pour lier des variables à cette instruction SQL prétraitée. Pour une instruction SQL préparée, si certaines valeurs de colonne doivent être modifiées à chaque exécution, des « espaces réservés » doivent être utilisés à la place de valeurs de colonne spécifiques. Il existe deux syntaxes pour utiliser les espaces réservés dans PDO : "paramètres nommés" et "paramètres de point d'interrogation". La syntaxe à utiliser dépend des préférences personnelles.

Instruction INSERT utilisant des paramètres nommés comme espaces réservés :

$dbh->prepare(“insert into contactinfo(name,address,phone) values(:name,:address,:phone)”);
Copier après la connexion

Vous devez personnaliser une chaîne en tant que "paramètre nommé", et chaque paramètre nommé doit commencer par deux points (:), Le nom des paramètres doit être significatif, de préférence identique au nom du champ correspondant.
Une instruction INSERT utilisant le paramètre point d'interrogation (?) comme espace réservé :

$dbh->prepare(“insert into contactinfo(name,address,phone) values(?,?,?)”);
Copier après la connexion

Le paramètre point d'interrogation doit correspondre à l'ordre de position des champs. Quel que soit le paramètre utilisé comme requête composée d'espaces réservés, ou qu'aucun espace réservé ne soit utilisé dans l'instruction, vous devez utiliser la méthode prepare() dans l'objet PDO pour préparer la requête qui sera utilisée pour l'exécution itérative, et renvoie un Objet de classe PDOStatement.

2. Paramètres de liaison

Lorsque l'instruction SQL est préparée sur le serveur de base de données via la méthode prepare() dans l'objet PDO, si des espaces réservés sont utilisés, vous avez besoin pour remplacer les paramètres d'entrée à chaque fois qu'il est exécuté. Vous pouvez lier des variables de paramètre aux espaces réservés préparés via la méthode bindParam() dans l'objet PDOStatement (la position ou le nom doit correspondre). Le prototype de la méthode bindParame() est le suivant :

bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )
Copier après la connexion

Le premier paramètre de paramètre est requis. Si la syntaxe d'espace réservé utilise des paramètres de nom dans la requête préparée, alors la chaîne de paramètre de nom est utilisée comme premier. Le paramètre de la méthode bindParam() est fourni. Si la syntaxe de l'espace réservé utilise un argument de point d'interrogation, le décalage d'index de l'espace réservé de valeur de colonne dans la requête préparée est transmis comme premier argument à la méthode.

La deuxième variable de paramètre est également facultative et fournit la valeur de l'espace réservé spécifié par le premier paramètre. Étant donné que le paramètre est passé par référence, seules les variables peuvent être fournies en tant que paramètres, pas directement les valeurs.

Le troisième paramètre data_type est facultatif et définit le type de données pour le paramètre actuellement lié. Il peut s'agir des valeurs suivantes.

PDO::PARAM_BOOL représente le type de données booléen.
PDO::PARAM_NULL représente le type NULL en SQL.
PDO::PARAM_INT représente le type de données INTEGER en SQL.
PDO::PARAM_STR représente CHAR, VARCHAR et d'autres types de données de chaîne en SQL.
PDO::PARAM_LOB représente le type de données d'objet volumineux en SQL.

Le quatrième paramètre length est facultatif et est utilisé pour spécifier la longueur du type de données.

Le cinquième paramètre driver_options est facultatif et fournit toutes les options spécifiques au pilote de base de données via ce paramètre.
Exemple de liaison de paramètres utilisant des paramètres nommés comme espaces réservés :

<?php
//...省略PDO连接数据库代码
$query = "insert into contactinfo (name,address,phone) values(:name,:address,:phone)";
$stmt = $dbh->prepare($query);          //调用PDO对象中的prepare()方法
 
$stmt->blinparam(&#39;:name&#39;,$name);        //将变量$name的引用绑定到准备好的查询名字参数":name"中
$stmt->blinparam(&#39;:address&#39;,$address);
$stmt->blinparam(&#39;:phone&#39;,phone);
//...
?>
Copier après la connexion

Exemple de liaison de paramètres utilisant des points d'interrogation (?) comme espaces réservés :

<?php
//...省略PDO连接数据库代码
$query = "insert into contactinfo (name,address,phone) values(?,?,?)";
$stmt = $dbh->prepare($query);          //调用PDO对象中的prepare()方法
 
$stmt->blinparam(1,$name,PDO::PARAM_STR);        //将变量$name的引用绑定到准备好的查询名字参数":name"中
$stmt->blinparam(2,$address,PDO::PARAM_STR);
$stmt->blinparam(3,phone,PDO::PARAM_STR,20);
//...
?>
Copier après la connexion

3. l'instruction préparée

Lorsque l'instruction préparée est terminée et que les paramètres correspondants sont liés, elle peut être exécutée à plusieurs reprises dans la zone de cache de la base de données en appelant la méthode execute() dans l'objet de classe PDOStatement Prepared. . Dans l'exemple suivant, le prétraitement est utilisé pour exécuter en continu la même instruction INSERT dans la table contactinfo fournie précédemment, et deux enregistrements sont ajoutés en modifiant différents paramètres. Comme indiqué ci-dessous :

<?php 
try {
     $dbh = new PDO(&#39;mysql:dbname=testdb;host=localhost&#39;, $username, $passwd);
}catch (PDOException $e){
    echo &#39;数据库连接失败:&#39;.$e->getMessage();
    exit;
}
 
$query = "insert into contactinfo (name,address,phone) values(?,?,?)";
$stmt = $dbh->prepare($query);
 
$stmt->blinparam(1,$name);      
$stmt->blinparam(2,$address);
$stmt->blinparam(3,phone);
 
$name = "赵某某";
$address = "海淀区中关村";
$phone = "15801688348";
 
$stmt->execute();           //执行参数被绑定后的准备语句
?>
Copier après la connexion

Si vous transmettez simplement des paramètres d'entrée et que vous avez de nombreux paramètres à transmettre, vous trouverez la syntaxe de raccourci présentée ci-dessous très utile. Il s'agit de la deuxième façon de remplacer les paramètres d'entrée d'une requête prétraitée lors de l'exécution en fournissant un paramètre facultatif dans la méthodeexecute(), qui est un tableau d'espaces réservés de paramètres nommés dans la requête préparée. Cette syntaxe vous permet d'omettre l'appel à $stmt->bindParam(). Modifiez l'exemple ci-dessus comme suit :

<?php 
//...省略PDO连接数据库代码
$query = "insert into contactinfo (name,address,phone) values(?,?,?)";
$stmt = $dbh->prepare($query); 
 
//传递一个数组为预处理查询中的命名参数绑定值,并执行一次。
$stmt->execute(array("赵某某","海淀区","15801688348"));
?>
Copier après la connexion

De plus, si une instruction INSERT est exécutée et qu'il y a un champ ID à croissance automatique dans la table de données, vous pouvez utiliser la méthode lastinsertId() dans l'objet PDO pour obtenir la dernière insertion de l'ID d'enregistrement dans la table de données. Si vous devez vérifier si d'autres instructions DML sont exécutées avec succès, vous pouvez obtenir le nombre de lignes qui affectent l'enregistrement via la méthode rowCount() dans l'objet de classe PDOStatement.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Introduction à la méthode d'importation de la bibliothèque de balises personnalisées thinkPHP2.1

Utilisez des pthreads pour obtenir de véritables Méthode multi-threading 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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Solution à l'erreur fatale PHP : appel à la méthode non définie PDO::prepare() dans Solution à l'erreur fatale PHP : appel à la méthode non définie PDO::prepare() dans Jun 22, 2023 pm 06:40 PM

PHP est un langage de développement Web populaire utilisé depuis longtemps. La classe PDO (PHP Data Object) intégrée à PHP est un moyen courant pour nous d'interagir avec la base de données lors du développement d'applications Web. Cependant, un problème que certains développeurs PHP rencontrent souvent est que lorsqu'ils utilisent la classe PDO pour interagir avec la base de données, ils reçoivent une erreur comme celle-ci : PHPFatalerror:CalltoundefinedmethodPDO::prep

Comment utiliser l'extension PDO_PGSQL de PHP ? Comment utiliser l'extension PDO_PGSQL de PHP ? Jun 02, 2023 pm 06:10 PM

En tant que langage de programmation populaire, PHP est largement utilisé dans le domaine du développement Web. Parmi eux, l'extension PDO_PGSQL de PHP est une extension PHP couramment utilisée. Elle fournit une interface interactive avec la base de données PostgreSQL et peut réaliser la transmission de données et l'interaction entre PHP et PostgreSQL. Cet article présentera en détail comment utiliser l'extension PDO_PGSQL de PHP. 1. Qu'est-ce que l'extension PDO_PGSQL ? PDO_PGSQL est une bibliothèque d'extensions de PHP, qui

PHP et PDO : Comment effectuer des insertions et des mises à jour en masse PHP et PDO : Comment effectuer des insertions et des mises à jour en masse Jul 28, 2023 pm 07:41 PM

PHP et PDO : Comment effectuer des insertions et des mises à jour par lots Introduction : Lorsque vous utilisez PHP pour écrire des applications liées à une base de données, vous rencontrez souvent des situations dans lesquelles vous devez insérer et mettre à jour des données par lots. L'approche traditionnelle consiste à utiliser des boucles pour effectuer plusieurs opérations sur la base de données, mais cette méthode est inefficace. Le PDO de PHP (PHPDataObject) fournit un moyen plus efficace d'effectuer des opérations d'insertion et de mise à jour par lots. Cet article explique comment utiliser PDO pour implémenter des opérations d'insertion et de mise à jour par lots. 1. Introduction au PDO : PDO est PH

PHP et PDO : Comment gérer les données JSON dans une base de données PHP et PDO : Comment gérer les données JSON dans une base de données Jul 29, 2023 pm 05:17 PM

PHP et PDO : Comment gérer les données JSON dans les bases de données Dans le développement Web moderne, le traitement et le stockage de grandes quantités de données sont une tâche très importante. Avec la popularité des applications mobiles et du cloud computing, de plus en plus de données sont stockées dans des bases de données au format JSON (JavaScript Object Notation). En tant que langage côté serveur couramment utilisé, l'extension PDO (PHPDataObject) de PHP offre un moyen pratique de traiter et d'exploiter des bases de données. Livre

PHP et PDO : Comment effectuer des requêtes de pagination et afficher des données PHP et PDO : Comment effectuer des requêtes de pagination et afficher des données Jul 29, 2023 pm 04:10 PM

PHP et PDO : Comment interroger et afficher des données dans des pages Lors du développement d'applications Web, l'interrogation et l'affichage de données dans des pages sont une exigence très courante. Grâce à la pagination, nous pouvons afficher une certaine quantité de données à la fois, améliorant ainsi la vitesse de chargement des pages et l'expérience utilisateur. En PHP, les fonctions de requête de pagination et d'affichage des données peuvent être facilement réalisées à l'aide de la bibliothèque PHP Data Object (PDO). Cet article expliquera comment utiliser PDO en PHP pour interroger et afficher des données par page, et fournira des exemples de code correspondants. 1. Créer une base de données et des tables de données

PHP et PDO : Comment effectuer des opérations de sauvegarde et de restauration de bases de données PHP et PDO : Comment effectuer des opérations de sauvegarde et de restauration de bases de données Jul 29, 2023 pm 06:54 PM

PHP et PDO : Comment effectuer des opérations de sauvegarde et de restauration de bases de données Lors du développement d'applications Web, la sauvegarde et la restauration de bases de données sont des tâches très importantes. En tant que langage de script côté serveur populaire, PHP fournit une multitude de bibliothèques et d'extensions, parmi lesquelles PDO (PHP Data Objects) est une puissante couche d'abstraction d'accès aux bases de données. Cet article explique comment utiliser PHP et PDO pour effectuer des opérations de sauvegarde et de restauration de bases de données. Étape 1 : Connexion à la base de données Avant l'opération proprement dite, nous devons établir une connexion à la base de données. Utiliser la paire PDO

Comment se connecter à la base de données Redis à l'aide de PDO Comment se connecter à la base de données Redis à l'aide de PDO Jul 28, 2023 pm 04:29 PM

Comment utiliser PDO pour se connecter à la base de données Redis Redis est une base de données clé-valeur open source, hautes performances, de stockage en mémoire, couramment utilisée dans le cache, la file d'attente et d'autres scénarios. Dans le développement PHP, l'utilisation de Redis peut améliorer efficacement les performances et la stabilité des applications. Grâce à l'extension PDO (PHPDataObjects), nous pouvons connecter et exploiter la base de données Redis plus facilement. Cet article explique comment utiliser PDO pour se connecter à une base de données Redis, avec des exemples de code. Installez l'extension Redis au début

PHP PDO vs mysqli : comparer et contraster PHP PDO vs mysqli : comparer et contraster Feb 19, 2024 pm 12:24 PM

PDOPDO est une couche d'abstraction d'accès aux bases de données orientée objet qui fournit une interface unifiée pour PHP, vous permettant d'utiliser le même code pour interagir avec différentes bases de données (telles que Mysql, postgresql, oracle). PDO masque la complexité des connexions à la base de données sous-jacente et simplifie les opérations de la base de données. Avantages et inconvénients Avantages : Interface unifiée, prend en charge plusieurs bases de données, simplifie les opérations de base de données, réduit les difficultés de développement, fournit des instructions préparées, améliore la sécurité, prend en charge le traitement des transactions. Inconvénients : les performances peuvent être légèrement inférieures à celles des extensions natives, reposent sur des bibliothèques externes, peuvent augmenter la surcharge. le code de démonstration utilise PDO Connectez-vous à la base de données MySQL : $db=newPDO("mysql:host=localhost;dbnam

See all articles