Neden böyle bir şeye ihtiyaç var diye düşünebilirsiniz belki. Ama acemi ve yeni öğrenen arkadaşlar için böyle bir şey paylaşmak istedim. PDO çok fazla kafa karıştıracak bir şey değil aslında ama öğrenme sürecinde sıkıntı çıkarabiliyor.
Aşağıdaki sınıf oldukça basit ve kullanışlı. Hemen göstereyim:
BasitPDO.php
<?php
/**
* Basit bir veritabanı sınıfı
* Sorguları çalıştırır
* PDO ile fetch, fetchAll, fetchColumn ... gibi metodlar
* zincirleme çalıştırılabilir ve kullanılabilir.
*
* @link http://demirphp.com
* @author Yılmaz Demir <demiriy@gmail.com>
*/
class BasitPDO
{
/**
* PDO sınıfını tutar
* @var void
*/
public static $pdo;
/**
* PDO bağlantısını kurar
* @param void $pdo
*/
public function __construct(\PDO $pdo)
{
self::$pdo = $pdo;
}
/**
* Sorgu çalıştırır
* @param string $query
* @return void
*/
public static function query($query)
{
if (!self::$pdo instanceof \PDO) {
throw new \Exception('PDO bağlantısı yapılmamış');
}
$stmt = self::$pdo->prepare($query);
$args = array_slice(func_get_args(), 1);
if (isset($args[0]) && is_array($args[0])) {
$stmt->execute($args[0]);
} else {
$stmt->execute($args);
}
return $stmt;
}
}Yukarıdaki dosyayı kaydedelim. Öncelikle veritabanı ayarını yapalım.
Connection.php
<?php
$pdo = new \PDO('mysql:host=localhost;dbname=database;charset=utf8', 'kullaniciadi', 'sifre');
$basit_pdo = new BasitPDO($pdo);Ne yapmak istiyorsunuz? Veritabanından bir tek gönderi mi birden fazla gönderi mi çekmek istiyorsunuz? Bütün haberleri çekelim:
Haberler.php
require 'Connection.php';
$haberler = BasitPDO::query('SELECT * FROM haberler WHERE onaylanmis=?', 'evet')->fetchAll();
foreach ($haberler as $key => $haber) {
echo $haber['baslik'] . '<br>';
}Haber.php?id=5
require 'Connection.php';
$id = $_GET['id'];
$haber = BasitPDO::query('SELECT * FROM haberler WHERE id=?', $id)->fetch();
echo $haber['baslik'];HaberSayisi.php
require 'Connection.php';
$haberSayisi = BasitPDO::query('SELECT * FROM haberler')->rowCount();
// ya da
$haberSayisi = BasitPDO::query('SELECT COUNT(id) FROM haberler')->fetchColumn();
echo $haberSayisi;Ekleme/Düzenleme/Silme
require 'Connection.php';
$ekle = BasitPDO::query('INSERT INTO haberler (baslik, icerik) VALUES (:baslik, :icerik)', [':baslik' => 'Başlık', ':icerik' => 'İçerik']);
$duzenle BasitPDO::query('UPDATE haberler SET baslik=:baslik WHERE id=:id', [':baslik' => 'Yeni Başlık', ':id' => $_GET['id']]);
$sil = BasitPDO::query('DELETE FROM haberler WHERE id=?', $_GET['id']);Bu işin onlarca farklı tekniği, kullanım biçimi vs. vardır. Bu sadece bir tanesi. Umarım işinize yarar. Sorularınızı sormaktan çekinmeyin.