Comment utiliser PDO pour obtenir des résultats de requêtes dans l'apprentissage de bases de données PHP ?

WBOY
Libérer: 2023-04-10 18:54:02
original
4125 Les gens l'ont consulté

Dans l'article précédent, je vous ai présenté "Comment utiliser PDO pour exécuter des instructions SQL dans l'apprentissage de bases de données PHP ?" ", qui présente en détail les connaissances sur la façon d'utiliser PDO pour exécuter des instructions SQL. Dans cet article, nous continuerons à examiner comment PHP utilise PDO pour obtenir les résultats des requêtes. J'espère que cela aidera tout le monde !

Comment utiliser PDO pour obtenir des résultats de requêtes dans l'apprentissage de bases de données PHP ?

Dans l'article précédent, nous avons appris à utiliser PDO pour exécuter des instructions SQL. Examinons ensuite la méthode d'acquisition de données de PDO. La méthode d'acquisition de données de PDO est très similaire à celle des autres extensions de base de données.

Tant que la requête SELECT est exécutée avec succès, un objet ensemble de résultats sera généré, que ce soit en utilisant la méthode qurey() dans l'objet PDO ou en utilisant prepare() et execute() et d'autres méthodes combinées avec des instructions préparées, l'exécution de la requête SELECT obtiendra l'objet de jeu de résultats PDOStatement. qurey()方法还是使用 prepare() execute() 等方法结合的预处理语句,执行 SELECT 查询都会得到结果集对象 PDOStatement。

通过 PDOStatement 类中的方法就可以获取 SELECT 语句的查询结果,接下来我们就来看一下PDOStatement 类中常见的几个获取结果集数据的方法。

<strong><span style="font-size: 20px;">fetch()</span></strong> 方法

fetch() 方法可以从一个 PDOStatement 对象的结果集中获取当前行的内容,并将结果集指针移至下一行,当到达结果集末尾时返回 FALSE,该方法的语法格式如下:

PDOStatement::fetch([int $fetch_style[, int $cursor_orientation = PDO::FETCH_ORI_NEXT[, int $cursor_offset = 0]]])
Copier après la connexion

其中需要注意的是:

$fetch_style 表示可选参数,用来控制下一行如何返回给调用者。其中这个参数的值必须是 PDO::FETCH_* 系列常量中的一个,如下所示:

  • PDO::FETCH_ASSOC 表示返回一个关联数组;

  • PDO::FETCH_BOTH(默认) 表示返回一个索引数组加关联数组混合的数组

  • PDO::FETCH_BOUND 表示返回 TRUE,并分配结果集中的值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量

  • PDO::FETCH_OBJ 表示返回一个属性名对应结果集列名的匿名对象。

  • PDO::FETCH_CLASS:返回一个请求类的新实例,映射结果集中的列名到类中对应的属性名。

如果 fetch_style 包含 PDO::FETCH_CLASSTYPE 例如:PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE,则类名由第一列的值决定;

$cursor orientation 表示可选参数,用来确定当对象是一个可滚动的游标时应当获取哪一行。此值必须是 PDO::FETCH_ORI_* 系列常量中的一个,默认为 PDO::FETCH_ORI_NEXT。

$offset 表示可选参数,当参数 $cursor_orientation 设置为 PDO::FETCH_ORI_ABS 时,此值指定结果集中想要获取行的绝对行号;当参数 $cursor_orientation 设置为 PDO::FETCH_ORI_REL 时,此值指定想要获取行相对于调用 PDOStatement::fetch() 前游标的位置。

接下来我们通过示例来看一下使用 fetch() 方法,获取 SELECT 语句的查询结果。示例如下:

<?php
    $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try{
        $pdo = new PDO($dsn,$user,$pwd);
        $sql = &#39;SELECT name,age,sex FROM user WHERE age = \&#39;12\&#39;&#39;;
        $res = $pdo -> query($sql);
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;
        while ($row = $res -> fetch(PDO::FETCH_ASSOC)){
            print_r($row);
        }
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e -> getMessage();
    }
?>
Copier après la connexion

输出结果:

Comment utiliser PDO pour obtenir des résultats de requêtes dans lapprentissage de bases de données PHP ?

由此我们便通过fetch() 方法完成了从一个 PDOStatement 对象的结果集中获取当前行的内容。$offset 表示可选参数,当参数 $cursor_orientation 设置为 PDO::FETCH_ORI_ABS 时,此值指定结果集中想要获取行的绝对行号;当参数 $cursor_orientation 设置为 PDO::FETCH_ORI_REL 时,此值指定想要获取行相对于调用 PDOStatement::fetch() 前游标的位置。

接下来我们看一下fetchAll() 方法的应用。

<strong><span style="max-width:90%">fetchAll()</span></strong> 方法

fetchAll() 方法与上面介绍的 fetch() 方法类似,但是该方法只需要调用一次就可以获取结果集中的所有行,并赋给返回的数组。该方法的语法格式如下:

PDOStatement::fetchAll([int $fetch_style[, mixed $fetch_argument[, array $ctor_args = array()]]])
Copier après la connexion

其中需要注意的是:

$fetch_style 表示可选参数,用来控制返回数组的内容,默认值为 PDO::FETCH_BOTH。该参数的取值与 fetch() 方法相同

$fetch_argument 根据 $fetch_style 参数的值,此参数有不同的意义:

  • PDO::FETCH_COLUMN

    Vous pouvez obtenir les résultats de la requête de l'instruction SELECT via les méthodes de la classe PDOStatement. Examinons ensuite plusieurs méthodes courantes pour obtenir des données d'ensemble de résultats dans la classe PDOStatement. 🎜🎜<strong><span style="font-size: 20px;">fetch()</span></strong>Méthode🎜🎜fetch() La méthode peut obtenir le contenu de la ligne actuelle à partir du jeu de résultats d'un objet PDOStatement et déplacer le pointeur du jeu de résultats vers le suivant row Lorsqu'il atteint FALSE, il est renvoyé à la fin du jeu de résultats. Le format de syntaxe de cette méthode est le suivant : 🎜
    <?php
        $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
        $user = &#39;root&#39;;
        $pwd  = &#39;root&#39;;
        try{
            $pdo  = new PDO($dsn,$user,$pwd);
            $sql  = &#39;SELECT name,age,sex FROM user WHERE sex = \&#39;男\&#39;&#39;;
            $res  = $pdo -> query($sql);
            $data = $res -> fetchAll(PDO::FETCH_ASSOC);
            echo &#39;<pre class="brush:php;toolbar:false">&#39;;
            print_r($data);
        }catch(PDOException $e){
            echo &#39;数据库连接失败:&#39;.$e -> getMessage();
        }
    ?>
    Copier après la connexion
    Copier après la connexion
    🎜 Ce qu'il faut noter est : 🎜🎜$fetch_style représente un facultatif. paramètre, qui est utilisé pour contrôler la manière dont la ligne suivante est renvoyée à l’appelant. La valeur de ce paramètre doit être l'une des séries de constantes PDO::FETCH_* , comme indiqué ci-dessous : 🎜
    • 🎜 < code>PDO::FETCH_ASSOC signifie renvoyer un tableau associatif ; 🎜
    • 🎜PDO::FETCH_BOTH (par défaut) signifie renvoyer un tableau qui est un mélange d'index tableau et tableau associatif 🎜
    • 🎜PDO::FETCH_BOUND signifie renvoyer TRUE et attribuer la valeur dans le jeu de résultats à la variable PHP liée par la méthode PDOStatement::bindColumn()🎜
    • 🎜PDO::FETCH_OBJ signifie renvoyer un objet anonyme dont le nom d'attribut correspond au nom de colonne du jeu de résultats. 🎜
    • 🎜PDO::FETCH_CLASS : renvoie une nouvelle instance de la classe demandée, mappant les noms de colonnes dans le jeu de résultats aux noms d'attributs correspondants dans la classe. 🎜
    🎜Si fetch_style contient PDO::FETCH_CLASSTYPE Par exemple : PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE, le nom de la classe est répertorié dans la première colonne Déterminé par la valeur ; 🎜🎜$cursor orientation représente un paramètre facultatif, utilisé pour déterminer quelle ligne doit être obtenue lorsque l'objet est un curseur défilant. Cette valeur doit faire partie de la série de constantes PDO::FETCH_ORI_*, par défaut PDO::FETCH_ORI_NEXT. 🎜🎜$offset représente un paramètre facultatif. Lorsque le paramètre $cursor_orientation est défini sur PDO::FETCH_ORI_ABS, cette valeur spécifie le numéro de ligne absolu de la ligne à obtenir dans. le jeu de résultats ; lorsque Lorsque le paramètre $cursor_orientation est défini sur PDO::FETCH_ORI_REL, cette valeur spécifie la position de la ligne que vous souhaitez récupérer par rapport au curseur avant d'appeler PDOStatement::fetch(). 🎜🎜Ensuite, examinons l'utilisation de la méthode fetch() à travers un exemple pour obtenir les résultats de la requête de l'instruction SELECT. L'exemple est le suivant : 🎜
    PDOStatement::fetchColumn([int $column_number = 0])
    Copier après la connexion
    Copier après la connexion
    🎜Résultat de sortie : 🎜🎜🎜Comment utiliser PDO pour obtenir des résultats de requêtes dans lapprentissage de bases de données PHP ?🎜🎜À partir de là, nous utilisons la méthode fetch() pour obtenir le contenu de la ligne actuelle à partir du jeu de résultats d'un objet PDOStatement. $offset représente un paramètre facultatif. Lorsque le paramètre $cursor_orientation est défini sur PDO::FETCH_ORI_ABS , cette valeur spécifie la ligne que vous souhaitez obtenir. dans le jeu de résultats. Numéro de ligne absolu ; lorsque le paramètre $cursor_orientation est défini sur PDO::FETCH_ORI_REL , cette valeur spécifie la ligne à récupérer par rapport à l'appel à PDOStatement::fetch() < /code>La position du curseur précédent. 🎜🎜Jetons ensuite un coup d'œil à l'application de la méthode fetchAll(). 🎜🎜<strong><span style="max-width:90%">fetchAll()</span></strong>Méthode🎜🎜fetchAll() La méthode est similaire à la méthode fetch() présentée ci-dessus, mais cette méthode ne doit être appelée qu'une seule fois pour obtenir toutes les lignes dans le jeu de résultats et affecté au tableau renvoyé. Le format de syntaxe de cette méthode est le suivant : 🎜
    <?php
        $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
        $user = &#39;root&#39;;
        $pwd  = &#39;root&#39;;
        try{
            $pdo = new PDO($dsn,$user,$pwd);
            $sql = &#39;SELECT name,age,sex FROM user&#39;;
            $res = $pdo -> query($sql);
            echo &#39;当前行第一列的值为:&#39;.$res -> fetchColumn().&#39;<br>&#39;;
            echo &#39;当前行第三列的值为:&#39;.$res -> fetchColumn(2).&#39;<br>&#39;;
            echo &#39;当前行第二列的值为:&#39;.$res -> fetchColumn(1).&#39;<br>&#39;;
        }catch(PDOException $e){
            echo &#39;数据库连接失败:&#39;.$e -> getMessage();
        }
    ?>
    Copier après la connexion
    Copier après la connexion
    🎜 Ce qu'il faut noter est : 🎜🎜🎜$fetch_style représente un paramètre facultatif, qui est utilisé pour contrôler le contenu du tableau renvoyé. la valeur par défaut est PDO::FETCH_BOTH. La valeur de ce paramètre est la même que la méthode fetch()🎜🎜$fetch_argument Ce paramètre a des significations différentes selon la valeur du paramètre $fetch_style : 🎜
    • 🎜PDO::FETCH_COLUMN : renvoie la colonne spécifiée indexée à partir de 0 ;🎜
    • PDO::FETCH_CLASS:返回指定类的实例,映射每行的列到类中对应的属性名;

    • PDO::FETCH_FUNC:将每行的列作为参数传递给指定的函数,并返回调用函数后的结果。

    $ctor_args 表示当 $fetch_style 参数为 PDO::FETCH_CLASS 时,自定义类的构造函数的参数。

    接下来我们通过示例来看一下fetchAll() 方法的实际应用,示例如下:

    <?php
        $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
        $user = &#39;root&#39;;
        $pwd  = &#39;root&#39;;
        try{
            $pdo  = new PDO($dsn,$user,$pwd);
            $sql  = &#39;SELECT name,age,sex FROM user WHERE sex = \&#39;男\&#39;&#39;;
            $res  = $pdo -> query($sql);
            $data = $res -> fetchAll(PDO::FETCH_ASSOC);
            echo &#39;<pre class="brush:php;toolbar:false">&#39;;
            print_r($data);
        }catch(PDOException $e){
            echo &#39;数据库连接失败:&#39;.$e -> getMessage();
        }
    ?>
    Copier après la connexion
    Copier après la connexion

    输出结果:

    Comment utiliser PDO pour obtenir des résultats de requêtes dans lapprentissage de bases de données PHP ?

    由此我们便通过使用 fetchAll() 方法,获取 SELECT 语句的查询结果。$ctor_args 表示当 $fetch_style 参数为 PDO::FETCH_CLASS 时,自定义类的构造函数的参数。

    接下来我们看一下fetchColumn() 方法的使用。

    <strong><span style="max-width:90%">fetchColumn() </span></strong>方法

    fetchColumn() 方法可以获取结果集中当前行指定字段的值,其语法格式如下:

    PDOStatement::fetchColumn([int $column_number = 0])
    Copier après la connexion
    Copier après la connexion

    其中需要注意的是:

    参数 $column_number表示的是想从行里取回的列的索引数字。

    如果该参数没有取值,也就是如果没有提供值,那么则会从第一列开始获取。

    接下来我们通过示例来看一下fetchColumn() 方法的使用,示例如下:

    <?php
        $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
        $user = &#39;root&#39;;
        $pwd  = &#39;root&#39;;
        try{
            $pdo = new PDO($dsn,$user,$pwd);
            $sql = &#39;SELECT name,age,sex FROM user&#39;;
            $res = $pdo -> query($sql);
            echo &#39;当前行第一列的值为:&#39;.$res -> fetchColumn().&#39;<br>&#39;;
            echo &#39;当前行第三列的值为:&#39;.$res -> fetchColumn(2).&#39;<br>&#39;;
            echo &#39;当前行第二列的值为:&#39;.$res -> fetchColumn(1).&#39;<br>&#39;;
        }catch(PDOException $e){
            echo &#39;数据库连接失败:&#39;.$e -> getMessage();
        }
    ?>
    Copier après la connexion
    Copier après la connexion

    输出结果:

    Comment utiliser PDO pour obtenir des résultats de requêtes dans lapprentissage de bases de données PHP ?

    由此我们便通过使用 fetchColumn() 方法,获取指定字段的值。

    大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!