Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich PDO, um Abfrageergebnisse beim Lernen von PHP-Datenbanken zu erhalten?

Wie verwende ich PDO, um Abfrageergebnisse beim Lernen von PHP-Datenbanken zu erhalten?

WBOY
WBOYOriginal
2021-10-28 15:21:014107Durchsuche

Im vorherigen Artikel habe ich Ihnen „Wie verwende ich PDO zum Ausführen von SQL-Anweisungen beim Lernen von PHP-Datenbanken?“ vorgestellt. “, in dem das Wissen über die Verwendung von PDO zum Ausführen von SQL-Anweisungen ausführlich vorgestellt wird. In diesem Artikel werden wir uns weiterhin damit befassen, wie PHP PDO zum Erhalten von Abfrageergebnissen verwendet. Hoffe, es hilft allen!

Wie verwende ich PDO, um Abfrageergebnisse beim Lernen von PHP-Datenbanken zu erhalten?

Im vorherigen Artikel haben wir gelernt, wie man PDO zum Ausführen von SQL-Anweisungen verwendet. Schauen wir uns als Nächstes die Datenerfassungsmethode von PDO an, die der anderer Datenbankerweiterungen sehr ähnlich ist.

Solange die SELECT-Abfrage erfolgreich ausgeführt wird, wird ein Ergebnismengenobjekt generiert, unabhängig davon, ob die Methode qurey() im PDO-Objekt oder prepare()verwendet wird > und execute() und andere Methoden in Kombination mit vorbereiteten Anweisungen führt die Ausführung der SELECT-Abfrage zum Ergebnismengenobjekt 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]]])

其中需要注意的是:

$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();
    }
?>

输出结果:

Wie verwende ich PDO, um Abfrageergebnisse beim Lernen von PHP-Datenbanken zu erhalten?

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

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

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

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

PDOStatement::fetchAll([int $fetch_style[, mixed $fetch_argument[, array $ctor_args = array()]]])

其中需要注意的是:

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

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

  • PDO::FETCH_COLUMN

    Sie können die Abfrageergebnisse der SELECT-Anweisung über die Methoden in der PDOStatement-Klasse abrufen. Schauen wir uns als Nächstes einige gängige Methoden zum Abrufen von Ergebnismengendaten in der PDOStatement-Klasse an. 🎜🎜<strong><span style="font-size: 20px;">fetch()</span></strong><strong><span style="font-size: 20px;">fetch()</span></strong>Methode🎜🎜fetch() Die Methode kann den Inhalt der aktuellen Zeile aus der Ergebnismenge eines PDOStatement-Objekts abrufen und den Ergebnismengenzeiger auf die nächste verschieben Wenn es FALSE erreicht, wird es am Ende der Ergebnismenge zurückgegeben. Das Syntaxformat dieser Methode ist wie folgt: 🎜
    <?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();
        }
    ?>
    🎜 Was zu beachten ist: 🎜🎜$fetch_style stellt eine Option dar Parameter, mit dem gesteuert wird, wie die nächste Zeile an den Aufrufer zurückgegeben wird. Der Wert dieses Parameters muss einer der Konstantenreihen PDO::FETCH_* sein, wie unten gezeigt: 🎜
    • 🎜 PDO::FETCH_ASSOC bedeutet die Rückgabe eines assoziativen Arrays; 🎜
    • 🎜PDO::FETCH_BOTH (Standard) bedeutet die Rückgabe eines Arrays, das eine Mischung aus Index ist Array und assoziatives Array 🎜
    • 🎜PDO::FETCH_BOUND bedeutet, TRUE zurückzugeben und den Wert im Ergebnissatz der PHP-Variablen zuzuweisen, die durch die Methode PDOStatement::bindColumn() gebunden wird🎜
    • 🎜PDO::FETCH_OBJ bedeutet die Rückgabe eines anonymen Objekts, dessen Attributname dem Spaltennamen der Ergebnismenge entspricht. 🎜
    • 🎜PDO::FETCH_CLASS: Gibt eine neue Instanz der angeforderten Klasse zurück und ordnet die Spaltennamen im Ergebnissatz den entsprechenden Attributnamen in der Klasse zu. 🎜
    🎜Wenn fetch_style PDO::FETCH_CLASSTYPE enthält, zum Beispiel: PDO::FETCH_CLASS |, wird der Klassenname in aufgeführt die erste Spalte wird durch den Wert bestimmt; 🎜🎜$cursororientierung stellt einen optionalen Parameter dar, der verwendet wird, um zu bestimmen, welche Zeile erhalten werden soll, wenn das Objekt ein scrollbarer Cursor ist. Dieser Wert muss eine der Konstantenserien PDO::FETCH_ORI_* sein, standardmäßig PDO::FETCH_ORI_NEXT. 🎜🎜$offset stellt einen optionalen Parameter dar. Wenn der Parameter $cursor_orientation auf PDO::FETCH_ORI_ABS gesetzt ist, gibt dieser Wert die absolute Zeilennummer der Zeile an, die abgerufen werden soll die Ergebnismenge; wenn der Parameter $cursor_orientation auf PDO::FETCH_ORI_REL gesetzt ist, gibt dieser Wert die Position der Zeile an, die Sie relativ zum Cursor abrufen möchten, bevor Sie PDOStatement::fetch() aufrufen. 🎜🎜Als nächstes schauen wir uns die Verwendung der fetch()-Methode anhand eines Beispiels an, um die Abfrageergebnisse der SELECT-Anweisung zu erhalten. Das Beispiel sieht wie folgt aus: 🎜
    PDOStatement::fetchColumn([int $column_number = 0])
    🎜Ausgabeergebnis: 🎜🎜🎜Wie verwende ich PDO, um Abfrageergebnisse beim Lernen von PHP-Datenbanken zu erhalten?🎜🎜Davon verwenden wir die Methode fetch(), um den Inhalt der aktuellen Zeile aus der Ergebnismenge eines PDOStatement-Objekts abzurufen. $offset stellt einen optionalen Parameter dar. Wenn der Parameter $cursor_orientation auf PDO::FETCH_ORI_ABS gesetzt ist, gibt dieser Wert die Zeile an, die Sie abrufen möchten in der Ergebnismenge. Wenn der Parameter $cursor_orientation auf PDO::FETCH_ORI_REL gesetzt ist, gibt dieser Wert die abzurufende Zeile relativ zum Aufruf von PDOStatement::fetch() Die Position des vorherigen Cursors. 🎜🎜Als nächstes werfen wir einen Blick auf die Anwendung der fetchAll()-Methode. 🎜🎜<code><strong><span style="max-width:90%">fetchAll()</span></strong><strong><span style="font-size: 20px;">fetchAll()</span></strong> Methode🎜🎜fetchAll() Die Methode ähnelt der oben vorgestellten fetch()-Methode, diese Methode muss jedoch nur einmal aufgerufen werden, um alle Zeilen abzurufen in der Ergebnismenge und dem zurückgegebenen Array zugewiesen. Das Syntaxformat dieser Methode lautet wie folgt: 🎜
    <?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();
        }
    ?>
    🎜 Zu beachten ist: 🎜🎜🎜$fetch_style stellt einen optionalen Parameter dar, der zur Steuerung des Inhalts des zurückgegebenen Arrays verwendet wird Der Standardwert ist PDO::FETCH_BOTH. Der Wert dieses Parameters ist derselbe wie bei der fetch()-Methode🎜🎜$fetch_argument Dieser Parameter hat je nach Wert des $fetch_style-Parameters unterschiedliche Bedeutungen: 🎜
    • 🎜PDO::FETCH_COLUMN: Gibt die angegebene Spalte zurück, beginnend bei 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();
        }
    ?>

    输出结果:

    Wie verwende ich PDO, um Abfrageergebnisse beim Lernen von PHP-Datenbanken zu erhalten?

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

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

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

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

    PDOStatement::fetchColumn([int $column_number = 0])

    其中需要注意的是:

    参数 $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();
        }
    ?>

    输出结果:

    Wie verwende ich PDO, um Abfrageergebnisse beim Lernen von PHP-Datenbanken zu erhalten?

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

    大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

Das obige ist der detaillierte Inhalt vonWie verwende ich PDO, um Abfrageergebnisse beim Lernen von PHP-Datenbanken zu erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn