PDO Fetch Modes

♠ Posted by Unknown at 02.16

PDO Fetch Modes


Method PDO::query mengembalikan objek PDOStatement yang dapat dimanfaatkan dalam banyak sama adalah sebagai mysql_fetch_object () atau pg_fetch_object (). Tentu saja ada kalanya indeks numerik yang dibutuhkan atau indeks asosiatif. PDO::query menyediakan untuk ini juga dengan memungkinkan coder untuk mengatur modus pengambilan untuk melalui objek PDOStatement atau melalui PDOStatement::setFetchMode ().

Fetch Assoc

Untuk mengambil sebuah array asosiatif dari hasil kami konstanta PDO::FETCH_ASSOC digunakan dan mengembalikan nama kolom sebagai indeks atau kunci dari array yang dihasilkan.

<?php
 /*** mysql hostname ***/
 $hostname 'localhost';
 /*** mysql username ***/ 
$username 'username'; 
/*** mysql password ***/
 $password 'password';

try {
    
$dbh = new PDO("mysql:host=$hostname;dbname=animals"$username$password);
    
/*** echo a message saying we have connected ***/
    
echo 'Connected to database<br />';

    
/*** The SQL SELECT statement ***/
    
$sql "SELECT * FROM animals";

    
/*** fetch into an PDOStatement object ***/
    
$stmt $dbh->query($sql);

    
/*** echo number of columns ***/
    
$result $stmt->fetch(PDO::FETCH_ASSOC);

    
/*** loop over the object directly ***/
    
foreach($result as $key=>$val)
    {
    echo 
$key.' - '.$val.'<br />';
    }

    
/*** close the database connection ***/
    
$dbh null;
}
catch(
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>

Kode diatas akan memberikan hasil sebagai berikut.

Connected to database
animal_id - 1
animal_type - emu
animal_name - bruce


Fetch Num

Seperti PDO::FETCH_ASSOC, PDO::FETCH_NUM menghasilkan indeks numerik dari hasil set bukan nama field.

<?php
 /*** mysql hostname ***/ 
$hostname 'localhost';
 /*** mysql username ***/ 
$username 'username';
 /*** mysql password ***/ 
$password 'password';

try {
    
$dbh = new PDO("mysql:host=$hostname;dbname=animals"$username$password);
    
/*** echo a message saying we have connected ***/
    
echo 'Connected to database<br />';

    
/*** The SQL SELECT statement ***/
    
$sql "SELECT * FROM animals";

    
/*** fetch into an PDOStatement object ***/
    
$stmt $dbh->query($sql);

    
/*** echo number of columns ***/
    
$result $stmt->fetch(PDO::FETCH_NUM);

    
/*** loop over the object directly ***/
    
foreach($result as $key=>$val)
    {
    echo 
$key.' - '.$val.'<br />';
    }

    
/*** close the database connection ***/
    
$dbh null;
}
catch(
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>

Kode diatas akan memberikan hasil sebagai berikut.

Connected to database
0 - 1
1 - emu
2 - bruce 


Fetch Both

Mungkin ada kali Anda perlu untuk mengambil kedua numerik dan asosiatif indeks. PDO::FETCH_BOTH menghasilkan indeks numerik dan asosiatif hasil set sehingga Anda dapat menggunakan salah, atau keduanya. 

<?php
 /*** mysql hostname ***/ 
$hostname 'localhost';
 /*** mysql username ***/ 
$username 'username'; 
/*** mysql password ***/ 
$password 'password';

try {
    
$dbh = new PDO("mysql:host=$hostname;dbname=animals"$username$password);
    
/*** echo a message saying we have connected ***/
    
echo 'Connected to database<br />';

    
/*** The SQL SELECT statement ***/
    
$sql "SELECT * FROM animals";

    
/*** fetch into an PDOStatement object ***/
    
$stmt $dbh->query($sql);

    
/*** echo number of columns ***/
    
$result $stmt->fetch(PDO::FETCH_BOTH);

    
/*** loop over the object directly ***/
    
foreach($result as $key=>$val)
    {
    echo 
$key.' - '.$val.'<br />';
    }

    
/*** close the database connection ***/
    
$dbh null;
}
catch(
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>

  
Kode diatas memberikan hasil dari kedua index sebagai berikut. 

Connected to database
animal_id - 1
0 - 1
animal_type - emu
1 - emu
animal_name - bruce
2 - bruce 


Fetch Object

Permata kecil ini mengambil hasil set dan mengembalikannya sebagai objek anonim atau stdClass dan memetakan nama field dari database sebagai properti obyek nilai dengan nilai yang tersimpan dalam database.

<?php/*** mysql hostname ***/$hostname 'localhost';/*** mysql username ***/$username 'username';/*** mysql password ***/$password 'password';

try {
    
$dbh = new PDO("mysql:host=$hostname;dbname=animals"$username$password);
    
/*** echo a message saying we have connected ***/
    
echo 'Connected to database<br />';

    
/*** The SQL SELECT statement ***/
    
$sql "SELECT * FROM animals";

    
/*** fetch into an PDOStatement object ***/
    
$stmt $dbh->query($sql);

    
/*** echo number of columns ***/
    
$obj $stmt->fetch(PDO::FETCH_OBJ);

    
/*** loop over the object directly ***/
    
echo $obj->animal_id.'<br />';
    echo 
$obj->animal_type.'<br />';
    echo 
$obj->animal_name;

    
/*** close the database connection ***/
    
$dbh null;
}
catch(
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>

 
Maka akan memberikan hasil sebagai berikut.

Connected to database
1
emu
bruce

        Penggunaan nama field sebagai properti kelas membuat mengintegrasikan hasil ke Orientasi Obyek sederhana.

Fetch Lazy

PDO::FETCH_LAZY adalah gabungan dari PDO::FETCH_BOTH dan PDO::FETCH_OBJ.

<?php/*** mysql hostname ***/$hostname 'localhost';/*** mysql username ***/$username 'username';/*** mysql password ***/$password 'password';

try {
    
$dbh = new PDO("mysql:host=$hostname;dbname=animals"$username$password);
    
/*** echo a message saying we have connected ***/
    
echo 'Connected to database<br />';

    
/*** The SQL SELECT statement ***/
    
$sql "SELECT * FROM animals";

    
/*** fetch into an PDOStatement object ***/
    
$stmt $dbh->query($sql);

    
/*** echo number of columns ***/
    
$result $stmt->fetch(PDO::FETCH_BOTH);

    
/*** loop over the object directly ***/
    
foreach($result as $key=>$val)
    {
    echo 
$key.' - '.$val.'<br />';
    }

    
/*** close the database connection ***/
    
$dbh null;
}
catch(
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>

  
Kode di atas akan memberikan hasil yang sama dengan PDO::FETCH_BOTH. 

Fetch Class

PDO::FETCH_CLASS memberikan contoh baru dari kelas tertentu. Nama field yang dipetakan ke properti (variabel) dalam kelas yang disebut. Ini menghemat cukup sedikit kode dan kecepatan ditingkatkan sebagai pemetaan ditangani dengan internal. 

<?phpclass animals{

public 
$animal_id;

public 
$animal_type;

public 
$animal_name;/***
 *
 * @capitalize first words
 *
 * @access public
 *
 * @return string
 *
 */
public function capitalizeType(){
 return 
ucwords($this->animal_type);
}

/*** end of class ***/

/*** mysql hostname ***/
$hostname 'localhost';/*** mysql username ***/$username 'username';/*** mysql password ***/$password 'password';

try {
    
$dbh = new PDO("mysql:host=$hostname;dbname=animals"$username$password);
    
/*** echo a message saying we have connected ***/
    
echo 'Connected to database<br />';

    
/*** The SQL SELECT statement ***/
    
$sql "SELECT * FROM animals";

    
/*** fetch into an PDOStatement object ***/
    
$stmt $dbh->query($sql);

    
/*** fetch into the animals class ***/
    
$obj $stmt->fetchALL(PDO::FETCH_CLASS'animals');

    
/*** loop of the object directly ***/
    
foreach($obj as $animals)
        {
        
/*** call the capitalizeType method ***/
        
echo $animals->capitalizeType().'<br />';
        }
    
/*** close the database connection ***/
    
$dbh null;
}
catch(
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>

Kode di atas menghasilkan daftar jenis hewan, dengan huruf pertama dikapitalisasi seperti ini:

Connected to database
Emu
Funnel Web
Lizard
Dingo
Kangaroo
Wallaby
Wombat
Koala
Kiwi  


PDO::FETCH_CLASS konstan telah diambil hasilnya langsung ke kelas hewan di mana kita mampu untuk secara langsung memanipulasi hasil.

PDO memberikan alternatif untuk PDO::fetch dan PDO::FETCH_CLASS. PDOStatement::fetchObject () akan mengikat mereka bersama-sama untuk memberikan hasil yang sama seperti yang ditunjukkan di sini.


<?phpclass animals{

public 
$animal_id;

public 
$animal_type;

public 
$animal_name;/***
 *
 * @capitalize first words
 *
 * @access public
 *
 * @return string
 *
 */
public function capitalizeType(){
 return 
ucwords($this->animal_type);
}

/*** end of class ***/

/*** mysql hostname ***/
$hostname 'localhost';/*** mysql username ***/$username 'username';/*** mysql password ***/$password 'password';

try {
    
$dbh = new PDO("mysql:host=$hostname;dbname=animals"$username$password);
    
/*** echo a message saying we have connected ***/
    
echo 'Connected to database<br />';

    
/*** The SQL SELECT statement ***/
    
$sql "SELECT * FROM animals";

    
/*** fetch into an PDOStatement object ***/
    
$stmt $dbh->query($sql);

    
/*** fetch into the animals class ***/
    
$animals $stmt->fetchObject('animals');

    
/*** echo the class properties ***/
    
echo $animals->animal_id.'<br />';
    echo 
$animals->capitalizeType().'<br />';
    echo 
$animals->animal_name;

    
/*** close the database connection ***/
    
$dbh null;
}
catch(
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>


Kode diatas akan memberikan hasil sebagai berikut.

Connected to database
1
Emu
bruce 

Perhatikan bahwa kita telah disebut metode animals::capitalizeType () untuk menunjukkan bahwa kita sebenarnya bekerja dengan sebuah instance dari kelas binatang. PDO::fetchObject () juga akan bekerja sebagai pengganti PDO::FETCH_OBJ.

Fetch Into

PDO::FETCH_INTO konstan memungkinkan kita untuk mengambil data ke dalam contoh yang ada dari kelas. Seperti PDO::FETCH_CLASS nama field yang dipetakan ke properti kelas. Dengan pemikiran ini, kita harus bisa meniru perilaku PDO::FETCH_CLASS oleh instantiating objek baru saat mengatur modus pengambilan. Dalam hal ini, modus mengambil diatur menggunakan metode PDO::setFetchMode().


<?phpclass animals {

public 
$animal_id;

public 
$animal_type;

public 
$animal_name;


public function 
capitalizeType(){
 return 
ucwords($this->animal_type);
}

/*** end of class ***/

/*** instantiate a new animals instance ***/
$animals = new animals;$animals->animal_id 10;$animals->animal_type 'crocodile';$animals->animal_name 'bruce';/*** mysql hostname ***/$hostname 'localhost';/*** mysql username ***/$username 'username';/*** mysql password ***/$password 'password';

try {
    
$dbh = new PDO("mysql:host=$hostname;dbname=animals"$username$password);
    
/*** echo a message saying we have connected ***/
    
echo 'Connected to database<br />';

    
/*** The SQL SELECT statement ***/
    
$sql "SELECT * FROM animals";

    
/*** fetch into an PDOStatement object ***/
    
$stmt $dbh->query($sql);

    
/*** set the fetch mode with PDO::setFetchMode() ***/
    
$stmt->setFetchMode(PDO::FETCH_INTO, new animals);

    
/*** loop over the PDOStatement directly ***/
    
foreach($stmt as $animals)
    {
    echo 
$animals->capitalizeType().'<br />';
    }
    
/*** close the database connection ***/
    
$dbh null;
}
catch(
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>

 
Maka akan memberikan hasil sebagai berikut.

Connected to database
Emu
Funnel Web
Lizard
Dingo
Kangaroo
Wallaby
Wombat
Koala
Kiwi




Sumber : http://phpro.org/tutorials/Introduction-to-PHP-PDO.html

0 komentar:

Posting Komentar