PDO Fetch Modes

♠ Posted by Unknown

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

CRUD PDO Vs CRUD MySQLi

♠ Posted by Unknown

CRUD PDO Vs CRUD MySQLi


Disini saya langsung menggunakan source-code pada suatu kasus. Agar dapat terlihat perbedaan dari PDO dengan MySQLi.

KONEKSI KE DATABASE

  • Script untuk koneksi ke database menggunakan MySQLi
<?php

$host = "localhost";
$user = "root";
$pass = "";
$database = "CRUD";

$db = mysqli_connect($host, $user, $pass, $database) or die ("koneksi gagal");

?>
  •  Script untuk koneksi ke database menggunakan PDO
<?php

$host = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'Sistem_informasi';

$db = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $dbuser, $dbpass);

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

?>

MENYIMPAN DATA KE DATABASE "INSERT"

  • Menyimpan data menggunakan MySQLi
<?php

include 'koneksi.php';

nama variabel ~> $nama          = $_POST['nama']; ~> name pada form table
nama variabel ~> $alamat        = $_POST['alamat'];
nama variabel ~> $jk                = $_POST['jk'];
nama variabel ~> $pendidikan = $_POST['pendidikan'];
nama variabel ~> $status         = $_POST['status'];
nama variabel ~> $telepon       = $_POST['telepon'];

$query = "INSERT INTO data (nama, alamat, jk, pendidikan, status, telepon) VALUES ('$nama', '$alamat', '$jk', '$pendidikan', '$status', '$telepon')"; ~> nama variabel diatas
$result = mysqli_query($db, $query);

if ($result== true) {
    header('Location: home.php');
}else {
    header('Location: tambah-data.php');
}

 ?>
  • Menyimpan data menggunakan PDO

<?php

$host = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'Sistem_informasi';
$db = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $dbuser, $dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

try{

$query = $pdo->prepare("insert into siswa (nis,nama,jenis_kelamin,tgl_lahir)
values (:nis,:nama, :jenis_kelamin,:tgl_lahir)");

$dataSiswa = array(
':nis' => '001',
':nama' => 'Budi',
':jenis_kelamin' => 'L',
':tgl_lahir' => '1987-06-01'
);

$query->execute($dataSiswa); ~> variabel dataSiswa dieksekusi
echo "Data siswa telah disimpan";
}catch(PDOException $e){
echo "Error! gagal menyimpan data siswa:".$e->getMessage();
}

?>

MENAMPILKAN DATA "SELECT"

  • Menampilkan data menggunakan MySQLi
<?php

$host = "localhost";
$user = "root";
$pass = "";
$database = "CRUD";

$db = mysqli_connect($host, $user, $pass, $database) or die ("koneksi gagal");

$query = mysqli_query($db, 'SELECT * from data');
?>

<table class="data">
                <tr>
                    <th>Nama</th>
                    <th>Alamat</th>
                    <th>JK</th>
                    <th>Pendidikan</th>
                    <th>Status</th>
                    <th>Telepon</th>
                    <th width="20%">Pilihan</th>
                </tr>
<?php foreach ($data_guru as $data) : ?>
                <tr>
                    <td><?php echo $data['nama'] ?></td>
                    <td><?php echo $data['alamat'] ?></td>
                    <td><?php echo $data['jk'] ?></td>
                    <td><?php echo $data['pendidikan'] ?></td>
                    <td><?php echo $data['status'] ?></td>
                    <td><?php echo $data['telepon'] ?></td>
</tr>
                <?php  endforeach ?>
    </table>

  • Menampilkan data menggunakan PDO

<?php
$host = 'localhost';
$dbuser = 'root';
$dbpass = 'ermatiana13';
$dbname = 'Sistem_informasi';
$db = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $dbuser, $dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$query = $pdo->prepare("SELECT * FROM siswa");
$query->execute();

?>

<table>
<tr>
<td>Nis</td>
<td>Nama</td>
<td>Jenis Kelamin</td>
<td>TGL Lahir</td>
</tr>

<?php while($siswa = $query->fetch()){?>

<tr>
<td><?php echo $siswa['nis']?></td>
<td><?php echo $siswa['nama']?></td>
<td><?php echo $siswa['jenis_kelamin']?></td>
<td><?php echo $siswa['tgl_lahir']?></td>
</tr>

<?php }?>

</table>

 MENGEDIT DATA "UPDATE"

  • Mengedit data menggunakan MySQLi
<?php

$host = "localhost";
$user = "root";
$pass = "";
$database = "CRUD";

$db = mysqli_connect($host, $user, $pass, $database) or die ("koneksi gagal");

$query = "UPDATE data
          SET nama = '$nama',
                alamat = '$alamat',
                jk = '$jk',
                pendidikan = '$pendidikan',
                status = '$status',
                telepon = '$telepon'
          WHERE id_data = '$id_data'";

$hasil = mysqli_query($db, $query);

if ($hasil == true) {
    header('Location: home.php');
}else {
    header('Location: tambah-data.php');
}

?>
  •  Mengedit data menggunakan PDO
<?php
$host = 'localhost';
$dbuser = 'root';
$dbpass = 'ermatiana13';
$dbname = 'Sistem_informasi';
$db = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $dbuser, $dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

try{
$query = $pdo->prepare("UPDATE siswaSET
nama = :nama,
jenis_kelamin =:jenis_kelamin,
tgl_lahir = :tgl_lahir WHERE
nis = :nis");

$data = array(
':nama' => 'Budi Setio',
':jenis_kelamin' => 'L',
':tgl_lahir' => '1988-06-01',
':nis' => '001'
);

$query->execute($data);
echo "Data siswa telah diupdate";
}catch(PDOException $e){
echo "Error! gagal mengedit data siswa:".$e->getMessage();
}

?>

MENGHAPUS DATA "DELETE"

  • Menghapus data menggunakan MySQLi
<?php
$host = "localhost";
$user = "root";
$pass = "";
$database = "CRUD";

$db = mysqli_connect($host, $user, $pass, $database) or die ("koneksi gagal");

$id_data = $_GET['id_data'];

$query = "DELETE FROM data WHERE id_data = $id_data";
$hasil = mysqli_query($db, $query);

if($hasil == true) {
    header('Location: home.php');
}else {
    header('Location: tambah-data.php');
}

?>
  • Menghapus data menggunakan PDO
<?php

$host = 'localhost';
$dbuser = 'root';
$dbpass = 'ermatiana13';
$dbname = 'Sistem_informasi';
$db = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $dbuser, $dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

try{
$query = $pdo->prepare("delete from siswa where nis = :nis");
$query->execute(array(
':nis' => '001'
));
echo "Data siswa sudah dihapus";
}catch(PDOException $e){
echo "Gagal menghapus data siswa:".$e->getMessage();
}

?>


Sumber : http://www.myphptutorials.com

Pengenalan PDO (PHP Data Object)

♠ Posted by Unknown

Pengenalan PDO (PHP Data Object)



PDO (PHP Data Objects) adalah php extension untuk mengakses database, sama seperti mysql_query atau mysql_fetch_array. Saat ini fungsi seperti mysql_query dan mysql_fetch_array sudah di-deprecated dan akan segera dihapus. Oleh karena itu kita perlu segera beralih menggunakan PDO atau MySQLi untuk menyimpan, edit atau hapus data. PDO bisa dipakai untuk mengakses beberapa database berbeda, sedangkan MySQLi hanya untuk database mysql. Jika saat ini kita menggunakan database MySQL dan di kemudian hari berganti menggunakan database PostgreSQL maka kita tidak perlu lagi mengubah kode yang sudah dibuat. Jadi bisa dibilang kalau PDO adalah bahasa pemrograman untuk masa depan. Karena untuk saat ini masih belum banyak atau jarang yang sudah menggunakan PDO atau MySQLi.

Database yang mendukung PDO
  • DBLIB: FreeTDS / Microsoft SQL Server / Sybase
  • Firebird (http://firebird.sourceforge.net/): Firebird / Interbase 6
  • IBM (IBM DB2)
  • Informix - IBM Informix Dynamic Server
  • MYSQL (http://www.mysql.com/): MySQL 3.x / 4.0
  • OCI (http://www.oracle.com): Oracle Call Interface
  • ODBC: ODBC v3 (DB2 IBM dan unixodbc)
  • Pgsql (http://www.postgresql.org/): PostgreSQL
  • SQLite (http://sqlite.org/): 3.x SQLite

Untuk melihat apakah driver PDO tersedia untuk database Anda, periksa phpinfo () dan Anda harus memiliki bagian bernama PDO dan pdo_mysql lain atau pdo_sqlite tergantung pada pilihan Anda database. Anda juga dapat memeriksa driver yang tersedia dengan metode statis PDO::getAvailableDrivers().


Untuk mengaktifkan PDO hanya mengkonfigurasi enable-PDO dan --with-pdo_sqlite --with_pdo_mysql atau apa pun sesuai kebutuhan database yang didukung oleh PDO. 

 Koneksi Menggunakan PDO pada PgSQL

<?phptry {
    
$db = new PDO("pgsql:dbname=pdo;host=localhost""username""password" );
    echo 
"PDO connection object created";
    }
catch(
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>


Koneksi Menggunakan PDO pada SQLite

<?phptry {
    
/*** connect to SQLite database ***/
    
$dbh = new PDO("sqlite:/path/to/database.sdb");
    }
catch(
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>


Ketika digunakan dengan SQLite PDO, pembuatan database menjadi lebih mudah. Hanya menentukan path ke file database dan akan dimuat. Jika file database tidak ada, PDO akan mencoba untuk menciptakannya. 


Karena jalur database tidak ada dan tidak dapat dibuat, eksepsi dilemparkan, pengecualian tertangkap di blok catch dan pesan kesalahan ditampilkan dengan $e-> getMessage();. Sekarang kita tahu cara membuat database, kita dapat membuat tabel dan INSERT beberapa data.

Fitur lain dari SQLite adalah kemampuan untuk membuat tabel dalam memori. Hal ini dapat sangat membantu jika Anda ingin membuat database tempory atau tabel atau bahkan untuk kode pengembangan.

<?phptry {
    
/*** connect to SQLite database ***/
    
$db = new PDO("sqlite::memory");

    
/*** a little message to say we did it ***/
    
echo 'database created in memory';
    }
catch(
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>

Kita lihat diatas bahwa database yang dibuat dalam memori dan pesan ditampilkan untuk memberitahu kita. Jika penciptaan database gagal, pengecualian PDO akan dilemparkan dan script diakhiri pada saat itu, melewati kontrol ke catch block.

Koneksi Menggunakan PDO pada MySQL

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

try {
    
$dbh = new PDO("mysql:host=$hostname;dbname=mysql"$username$password);
    
/*** echo a message saying we have connected ***/
    
echo 'Connected to database';
    }
catch(
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>



Koneksi Menggunakan PDO pada Firebird

Koneksi ini biasanya dipakai oleh pengguna windows dan kodenya cukup sederhana.

<?phptry {
    
$dbh = new PDO("firebird:dbname=localhost:C:\Programs\Firebird\DATABASE.FDB""SYSDBA""masterkey");
    }  
catch (
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>
  
Koneksi Menggunakan PDO pada Informix

Koneksi ini juga banyak digunakan oleh pengguna windows. Contoh ini menunjukkan bagaimana menghubungkan ke database Informix katalog sebagai InformixDB di odbc.ini :  

<?phptry {
    
$dbh = new PDO("informix:DSN=InformixDB""username""password");
    }
catch (
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>


Koneksi Menggunakan PDO pada Oracle

Database oracle digunakan oleh banyak perusahaan. 

<?phptry {
    
$dbh = new PDO("OCI:""username""password")
    }
catch (
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>


Ini bekerja baik untuk koneksi Oracle sederhana. Driver oracle dapat mengambil dua parameter opsional, yang nama database, dan set karakter. Untuk menghubungkan dengan nama database "account" dan charset UTF-8 kode berikut harus digunakan.

<?phptry {
    
$dbh = new PDO("OCI:dbname=accounts;charset=UTF-8""username""password");
    }
catch (
PDOException $e)
    {     echo 
$e->getMessage();     } ?>

 

Koneksi Menggunakan PDO pada ODBC

Ada banyak koneksi ODBC yang bisa dibuat. Disini menunjukkan koneksi ke MS Access dengan nama database account. Jalur yang ditentukan adalah c:\\accounts.mdb

<?phptry {
    
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\accounts.mdb;Uid=Admin");
    }
catch (
PDOException $e)
    {
    echo 
$e->getMessage();
    } 
?>

  
 Koneksi Menggunakan PDO pada DBLIB

<?phptry {
    
$hostname "localhost";
    
$port     10060;
    
$dbname   "my_database";
    
$username "username";
    
$password "password";

    
$dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$password");
    }
catch (
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>

Koneksi Menggunakan PDO pada IBM

Contoh ini menunjukkan menghubungkan ke account database bernama IBM DB2.

<?phptry {
    
$db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=accounts; HOSTNAME=1.2.3,4;PORT=56789;PROTOCOL=TCPIP;""username""password");
    }
catch (
PDOException $e)
    {
    echo 
$e->getMessage();
    }
?>
 
Menutup Koneksi Database

Sampai saat ini kita telah melihat bagaimana menghubungkan ke database menggunakan PDO. Tapi tentu saja, kita juga perlu untuk memutuskan ketika kita telah selesai. Hal ini biasanya dilakukan pada akhir naskah mana PHP secara otomatis akan menutup koneksi.

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

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

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


Jika koneksi database gagal, kode untuk menetapkan nilai null tidak pernah disebut sebagai pengecualian melempar kontrol ke catch block.



Sumber : 
 

Penerapan CRUD Pada Form

♠ Posted by Unknown

Penerapan CRUD Pada Form


Saya mencoba membuat Login dan CRUD sederhana dengan membuat form data guru dan menampilkannya pada tabel. Berikut ulasannya.

Koneksi.php




Halaman Login
login.php

 
Dari script di atas maka akan menghasilkan tampilan sebagai berikut.



Hasil dari CRUD akan saya tampilkan di home.

Pertama kita langsung membuat CREATE untuk menambahkan data.

tambah-data.php

<?php
session_start();

if (!isset($_SESSION['username'])) {
    header('Location: ../login.php');
    exit();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Tambah Data</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="asset/css/bootstrap.min.css">
    <link rel="stylesheet" href="asset/css/bootstrap-theme.min.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<form method="post" action="proses-tambah-data.php">
    <div class="form-group">
    <h2 style="text-align: center;">Tambah Data Guru </h2>
      <label for="text">Nama Lengkap</label>
      <input type="text" class="form-control" name="nama" placeholder="Masukkan nama lengkap anda">
    </div>
    <div class="form-group">
      <label for="text">Alamat</label>
      <input type="text" class="form-control" name="alamat" placeholder="Masukkan alamat anda">
    </div>
    <div class="form-group">
      <label for="text">Jenis Kelamin</label><br>
      <label class="radio-inline"><input type="radio" name="jk" value="L">Laki-laki</label>
      <label class="radio-inline"><input type="radio" name="jk" value="P">Perempuan</label>
    </div>
    <div class="form-group">
      <label for="text">Pendidikan</label>
      <input type="text" class="form-control" name="pendidikan" placeholder="Pendidikan terakhir anda">
    </div>
    <div class="form-group">
      <label for="text">Status</label>
      <input type="text" class="form-control" name="status" placeholder="Status anda">
    </div>
    <div class="form-group">
      <label for="text">Telepon</label>
      <input type="text" class="form-control" name="telepon" placeholder="Masukkan nomer telepon anda">
    </div>
    <button class="btn btn-danger">Simpan</button>
    <button class="btn btn-danger" onclick="self.history.back();">Batal</button>
  </form>

</body>
</html>


proses-tambah-data.php

<?php
session_start();

if (!isset($_SESSION['username'])) {
    header('Location: ../login.php');
    exit();
}
include 'koneksi.php';

$nama         = $_POST['nama'];
$alamat     = $_POST['alamat'];
$jk         = $_POST['jk'];
$pendidikan = $_POST['pendidikan'];
$status     = $_POST['status'];
$telepon     = $_POST['telepon'];

$query = "INSERT INTO data (nama, alamat, jk, pendidikan, status, telepon) VALUES ('$nama', '$alamat', '$jk', '$pendidikan', '$status', '$telepon')";
$result = mysqli_query($db, $query);

if ($result== true) {
    header('Location: home.php');
}else {
    header('Location: tambah-data.php');
}


 ?> 


Lalu membuat READ untuk halaman utama yang akan kita lihat.

home.php

<?php
include 'koneksi.php';
include 'proses-list-data.php';

$query = mysqli_query($db, 'SELECT * from data');
?>
<!DOCTYPE html>=
<html lang="en">
<head>
    <title>Halaman Admin</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="asset/css/bootstrap.min.css">
    <link rel="stylesheet" href="asset/css/bootstrap-theme.min.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<h2 style="text-align: center;">Data Guru Baru</h2>
<a href="tambah-data.php"><button class="btn btn btn-success" name="tambah">Tambah</button></a>
<br><br>
<table class="table table-bordered">
   
    <?php if (empty($data_guru)) : ?>
        Tidak ada data.
    <?php else : ?>

    <table class="data">
                <tr>
                    <th>Nama</th>
                    <th>Alamat</th>
                    <th>JK</th>
                    <th>Pendidikan</th>
                    <th>Status</th>
                    <th>Telepon</th>
                    <th width="20%">Pilihan</th>
                </tr>
                <?php foreach ($data_guru as $data) : ?>
                <tr>
                    <td><?php echo $data['nama'] ?></td>
                    <td><?php echo $data['alamat'] ?></td>
                    <td><?php echo $data['jk'] ?></td>
                    <td><?php echo $data['pendidikan'] ?></td>
                    <td><?php echo $data['status'] ?></td>
                    <td><?php echo $data['telepon'] ?></td>
                    <td>
                        <a href="edit-data.php?id_data=<?php echo $data['id_data']; ?>" class="btn btn-edit">Edit</a>
                        <a href="delete-data.php?id_data=<?php echo $data['id_data']; ?>" class="btn btn-hapus" onclick="return confirm('anda yakin akan menghapus data?');">Hapus</a>
                    </td>
                </tr>
                <?php  endforeach ?>
    </table>
            <?php endif ?>
</table>


</body>
</html>

proses-list-data.php

<?php
if (session_status()!=PHP_SESSION_ACTIVE) {
session_start();
}

if (! isset($_SESSION['username'])) {
    header('Location: ../login.php');
    exit();
}

include 'koneksi.php';


$query = "SELECT * FROM data";
$hasil = mysqli_query($db, $query);

$data_guru = array();

while ($row = mysqli_fetch_assoc($hasil)) {
    $data_guru[] = $row;
}

?>


Selanjutnya kita buat UPDATE untuk mengedit data.

edit-data.php

<?php
session_start();
if (!isset($_SESSION['username'])) {
    header('Location: ../login.php');
    exit();
}
include 'koneksi.php';

$id_data = $_GET['id_data'];
$query = "SELECT * FROM data WHERE id_data = $id_data";
$hasil = mysqli_query($db, $query);
$data_guru = mysqli_fetch_assoc($hasil);

?>
<!DOCTYPE html>
<html>
<head>
    <title>Edit Data</title>
  <meta charset="utf-8">
  <link rel="stylesheet" href="asset/css/bootstrap.min.css">
    <link rel="stylesheet" href="asset/css/bootstrap-theme.min.css">
  <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<form method="post" action="proses-edit-data.php">
    <div class="form-group">
    <h2 style="text-align: center;">Edit Data Guru </h2>
    <input type="hidden" name="id_data" value="<?php echo $data_guru['id_data']; ?>">
      <label for="text">Nama Lengkap</label>
      <input type="text" class="form-control" name="nama" value="<?php echo $data_guru['nama']; ?>">
    </div>
    <div class="form-group">
      <label for="text">Alamat</label>
      <input type="text" class="form-control" name="alamat" value="<?php echo $data_guru['alamat']; ?>">   </div>
    <div class="form-group">
      <label for="text">Jenis Kelamin</label><br>
      <label class="radio-inline"><input type="radio" name="jk" value="<?php echo $data_guru['jk']; ?>">Laki-laki </label>
      <label class="radio-inline"><input type="radio" name="jk" value="<?php echo $data_guru['jk']; ?>">Perempuan</label>
    </div>
    <div class="form-group">
      <label for="text">Pendidikan</label>
      <input type="text" class="form-control" name="pendidikan" value="<?php echo $data_guru['pendidikan']; ?>">
    </div>
    <div class="form-group">
      <label for="text">Status</label>
      <input type="text" class="form-control" name="status" value="<?php echo $data_guru['status']; ?>">
    </div>
    <div class="form-group">
      <label for="text">Telepon</label>
      <input type="text" class="form-control" name="telepon" value="<?php echo $data_guru['telepon']; ?>">
    </div>
    <button class="btn btn-danger">Simpan</button>
    <button class="btn btn-danger" onclick="self.history.back();">Batal</button>
  </form>
</body>
</html>

proses-edit-data.php

<?php
include 'koneksi.php';

include 'edit-data.php';

$id_data = $_POST['id_data'];
$nama = $_POST['nama'];
$alamat = $_POST['alamat'];
$jk = $_POST['jk'];
$pendidikan = $_POST['pendidikan'];
$status = $_POST['status'];
$telepon = $_POST['telepon'];

$query = "UPDATE data
          SET nama = '$nama',
                alamat = '$alamat',
                jk = '$jk',
                pendidikan = '$pendidikan',
                status = '$status',
                telepon = '$telepon'
          WHERE id_data = '$id_data'";

$hasil = mysqli_query($db, $query);

if ($hasil == true) {
    header('Location: home.php');
}else {
    header('Location: tambah-data.php');
}

?>

Langkah selanjutnya membuat  script untuk menghapus data yaitu DELETE.

delete-data.php

<?php

include 'koneksi.php';

$id_data = $_GET['id_data'];

$query = "DELETE FROM data WHERE id_data = $id_data";
$hasil = mysqli_query($db, $query);

if($hasil == true) {
    header('Location: home.php');
}else {
    header('Location: tambah-data.php');
}

?>


Berikut hasil dari script CRUD diatas.
home.php


tambah-data.php


home.php


edit-data.php


home.php


delete-data.php