Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan PDO untuk mendapatkan hasil pertanyaan dalam pembelajaran pangkalan data PHP?

Bagaimana untuk menggunakan PDO untuk mendapatkan hasil pertanyaan dalam pembelajaran pangkalan data PHP?

WBOY
WBOYasal
2021-10-28 15:21:014169semak imbas

Dalam artikel sebelumnya, saya membawakan anda " Bagaimana untuk menggunakan PDO untuk melaksanakan pernyataan SQL dalam pembelajaran pangkalan data PHP? 》, yang memperkenalkan secara terperinci pengetahuan tentang cara menggunakan PDO untuk melaksanakan pernyataan SQL Dalam artikel ini, kami akan terus melihat bagaimana PHP menggunakan PDO untuk mendapatkan hasil pertanyaan. Semoga ia membantu semua orang!

Bagaimana untuk menggunakan PDO untuk mendapatkan hasil pertanyaan dalam pembelajaran pangkalan data PHP?

Dalam artikel sebelum ini kita telah mempelajari cara menggunakan PDO untuk melaksanakan pernyataan SQL, kemudian mari kita lihat kaedah pemerolehan data PDO, kaedah pemerolehan data PDO Ia sangat serupa dengan sambungan pangkalan data lain.

Selagi pertanyaan SELECT berjaya dilaksanakan, objek set hasil akan dijana, sama ada menggunakan kaedah qurey() dalam objek PDO atau menggunakan pernyataan yang disediakan yang menggabungkan prepare() dan execute() kaedah , melaksanakan pertanyaan SELECT akan mendapat hasil set objek PDOStatement.

Anda boleh mendapatkan hasil pertanyaan pernyataan SELECT melalui kaedah dalam kelas PDOStatement Seterusnya, mari kita lihat beberapa kaedah biasa untuk mendapatkan data set hasil dalam kelas PDOStatement. Kaedah

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

fetch() boleh mendapatkan kandungan baris semasa daripada set hasil objek PDOStatement dan menukar set hasil Penunjuk bergerak ke baris seterusnya dan mengembalikan FALSE apabila ia mencapai penghujung set hasil Format sintaks kaedah ini adalah seperti berikut:

PDOStatement::fetch([int $fetch_style[, int $cursor_orientation = PDO::FETCH_ORI_NEXT[, int $cursor_offset = 0]]])

🎜>

mewakili parameter pilihan , digunakan untuk mengawal cara baris seterusnya dikembalikan kepada pemanggil. Nilai parameter ini mestilah salah satu daripada pemalar siri $fetch_style , seperti ditunjukkan di bawah: PDO::FETCH_*

  • bermaksud mengembalikan tatasusunan bersekutu; PDO::FETCH_ASSOC

    (lalai) bermaksud mengembalikan tatasusunan bercampur tatasusunan indeks ditambah tatasusunan bersekutu
  • PDO::FETCH_BOTH

    bermaksud mengembalikan BENAR dan memberikan nilai dalam set hasil kepada PDOStatement:: bindColumn () Pembolehubah PHP yang terikat dengan kaedah
  • PDO::FETCH_BOUND

    bermaksud mengembalikan objek tanpa nama yang nama atributnya sepadan dengan nama lajur set hasil.
  • PDO::FETCH_OBJ

    : Mengembalikan tika baharu kelas permintaan, memetakan nama lajur dalam set hasil kepada nama atribut yang sepadan dalam kelas.
  • PDO::FETCH_CLASSJika

    mengandungi
  • Contohnya: PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE, nama kelas ditentukan oleh nilai lajur pertama; 🎜>
Mewakili parameter pilihan, digunakan untuk menentukan baris mana yang perlu diperoleh apabila objek ialah kursor boleh tatal. Nilai ini mestilah salah satu daripada siri pemalar PDO::FETCH_ORI_*, lalai kepada PDO::FETCH_ORI_NEXT.

fetch_stylePDO::FETCH_CLASSTYPE mewakili parameter pilihan Apabila parameter $cursor_orientation ditetapkan kepada

, nilai ini menentukan nombor baris mutlak yang akan diperolehi dalam set hasil apabila parameter $cursor_orientation ialah ditetapkan kepada

, Nilai ini menentukan kedudukan baris yang anda ingin ambil berbanding dengan kursor sebelum memanggil PDOStatement::fetch(). $cursor orientation

Seterusnya, mari kita ambil contoh untuk menggunakan kaedah fetch() untuk mendapatkan hasil pertanyaan pernyataan SELECT. Contohnya adalah seperti berikut:

$offsetPDO::FETCH_ORI_ABSHasil keluaran: PDO::FETCH_ORI_REL

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

Daripada ini kami melengkapkan hasil daripada objek PDOStatement melalui fetch( ) kaedah Fokus pada mendapatkan kandungan baris semasa.
mewakili parameter pilihan Apabila parameter

ditetapkan kepada

, nilai ini menentukan nombor baris mutlak baris dalam set hasil yang anda ingin dapatkan apabila parameter Bagaimana untuk menggunakan PDO untuk mendapatkan hasil pertanyaan dalam pembelajaran pangkalan data PHP? ditetapkan

, nilai ini menentukan nombor baris mutlak baris yang anda ingin perolehi dalam set hasil untuk mendapatkan kedudukan baris berbanding kursor sebelum memanggil

. $offset   $cursor_orientation Seterusnya mari kita lihat pada aplikasi kaedah fetchAll().  PDO::FETCH_ORI_ABS $cursor_orientationPDO::FETCH_ORI_REL PDOStatement::fetch() fetchAll()

Kaedah <strong><span style="font-size: 20px;">fetchAll()</span></strong> Kaedah ini serupa dengan kaedah fetch() yang diperkenalkan di atas, tetapi kaedah ini hanya perlu dipanggil sekali untuk mendapatkan semua baris dalam set hasil dan menetapkannya kepada tatasusunan yang dikembalikan. Format sintaks kaedah ini adalah seperti berikut:

fetchAll()Perlu diambil perhatian bahawa:

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


mewakili parameter pilihan, yang digunakan untuk mengawal kandungan Tatasusunan yang dikembalikan. Nilai lalai ialah PDO::FETCH_BOTH. Nilai parameter ini adalah sama dengan kaedah fetch()

$fetch_style  Parameter ini mempunyai makna yang berbeza mengikut nilai parameter $fetch_style:

$fetch_argument

    : Mengembalikan lajur yang ditentukan diindeks bermula dari 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();
    }
?>

输出结果:

Bagaimana untuk menggunakan PDO untuk mendapatkan hasil pertanyaan dalam pembelajaran pangkalan data PHP?

由此我们便通过使用 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();
    }
?>

输出结果:

Bagaimana untuk menggunakan PDO untuk mendapatkan hasil pertanyaan dalam pembelajaran pangkalan data PHP?

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

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

Atas ialah kandungan terperinci Bagaimana untuk menggunakan PDO untuk mendapatkan hasil pertanyaan dalam pembelajaran pangkalan data PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn