Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

PDO'ya geçmek

merhaba arkadaşlar projelerimde artık pdo kullnmak istiyorum pdo içinhazır bir ezsql gibi sınıf varmı yoksa kndimizmi yazacapız pdo hkknda bilgim az yardımcı olrsanız sevinirim.
+1
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • xuma adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    171 cevap - 1 soru
    PDO zaten sınıftır bunu istediğin şekilde genişletebilirsin.
    • sharq adlı üyenin fotoğrafı sharq
      tek öğrendiğim şey

      try {
                  $db = new PDO("mysql:dbname=".DB_NAME.";host=".HOST_NAME."", "".HOST_USER."", "".HOST_PASW."" );
                 
              }
          catch(PDOException $e)
              {
                  echo $e->getMessage();
              }
      	
      	
      	
      	$sql = "SELECT * FROM cms";
          foreach ($db->query($sql) as $row)
              {
              echo $row['name'].' : '.$row['languages'].'<br />';
              }
      


      şuan sadece bu yani ezSql gibi $query("SELECT")->$sql; flan filan böle bişi yapamazmıyız? yani hazır bi sınıf indirmedim ezsql de hazır sınıf war bunu gibi bişi indrmedim.
      9 yıl önce yazılmış
    • xuma adlı üyenin fotoğrafı xuma
      :) Tam demek istediğini anlamadım ama ezsql'in pdo sınıfıda istersen onuda kullanabilirsin.Ama sql işini iyice kolaylaştırayım diyorsan php activerecords veya doctrine'i araştır.Mesela ben pdo'yu şu şekilde kullanırım;
      <?
      	public function __construct(PDO $db){
      		$this->link=$db;
      	}
      	public function kategoriler(){		
      		$sorgu=$this->link->query("select * from page_categories as pc,page_language pl where WHERE( pc.c_id=? and pc.c_active='true') and (pl.i_id=? and pl.l_language=?)");
      		$sorgu->execute(array("1","1","tr"));
      		$sonuc=$sorgu->fetchAll(PDO::FETCH_ALL);
      		return $sonuc;
      	}
      
      9 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      anlamamanı anladım :) kendimi tam olarak ifade edemedim galiba :)
      codeigniter'daki gibi veri tabanı seçmek istiyorum yada ezSql deki gibi yani

      $db->query("INSERT INTO users (id, name, email) VALUES (NULL,'The Cat','cat@google.com')");

      bu tarzda falan ya kendimi anlatamadım yada PDO'nun mantığını tam anlayamadım

      $user = $db->get_row("SELECT name, email FROM users WHERE id = 4");

      echo $user->name;
      echo $user->email;

      bunları yapabilecek bu tarz yapabilecek bi sınıf varmı diyorum yani
      9 yıl önce yazılmış
    • xuma adlı üyenin fotoğrafı xuma
      Bu şekilde sorgunu PDO'da çalıştırabilirsin ancak tercihen method
      $db->query("INSERT INTO users (id, name, email) VALUES (NULL,'The Cat','cat@google.com')");
      

      yerine
      $sorgu=$db->prepare("INSERT INTO users (id, name, email) VALUES (NULL,:kategori,:email)");
      $sorgu->bindValue(':kategori', $kategori, PDO::PARAM_STR);
      $sorgu->bindValue(':email', $email, PDO::PARAM_STR);
      $sorgu->execute();
      

      veya
      $sorgu=$db->prepare("INSERT INTO users (id, name, email) VALUES (NULL,?,?)");
      $sorgu->execute(array($kategori,$email));
      


      $user = $db->get_row("SELECT name, email FROM users WHERE id = 4"); 
      

      yerine
      $user = $db->prepere("SELECT name, email FROM users WHERE id = ?");
      $user->execute(array($id));
      $sonuc=$user->fetch(PDO::FETCH_OBJ);
      
      echo  $sonuc->name;
      echo $sonuc->surname;
      

      $stmt = $db->prepare("SELECT * FROM table WHERE id=? AND name=?");
      $stmt->execute(array($id, $name));
      $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
      

      Örnekler çok nasıl bir yöntem kullanacağın sana kalmış.Mesela PDO::FETCH_OBJ ile obje şeklinde alabilirken PDO::FETCH_ASSOC klasik yöntemle array şeklinde alırsın.
      9 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      galiba ben pdo'yu anlayamadım

      şimdi bu benim db class'ım

      class db {
      
      	 private static $HOST_NAME = "localhost";
      	 private static $HOST_USER = "root";
      	 private static $HOST_PASS = "root";
      	 private static $DB_NAME   = "furkancelikdb";
      	
      	public function __construct(){
      	
      					try {
      						return $dbb = new PDO("mysql:host=$HOST_NAME;dbname=$DB_NAME", $HOST_USER, $HOST_PASS);
      						
      						}
      					catch(PDOException $e){
      						die("<center><b>!! VERİ TABANINA BAĞANILAMADI !!</center></b>");
      						echo $e->getMessage();
      						}
      	
      	}
      	
      	
      	
      	
      	}
      


      şimdi bi sorgu yapacağım

      $db = new db;
      
      $sth = $db->prepare("SELECT * FROM yonetici");
      $sth->execute();
      $result = $sth->fetchAll();
      
      


      burda hata alıyorum prepare'da hata alıyorum demek istediğim şey ezSql'de ezSql sınıfını include ediyoruz PDO'da hiçbir sınıf include etmedim çünkü include edilecek bi sınıfı warmı yokmu bilmiyorum warsada sınıfa sahip değilim aldığım hata Fatal error: Call to undefined method db::prepare() in
      9 yıl önce yazılmış
    • xuma adlı üyenin fotoğrafı xuma
      PDO'yu include etmene gerek yok zaten hali hazırda var.Değişik şekillerde kullanabilirsin yapına göre uygun olan değişir ;
      $db= new PDO("mysql:host=".VTSUNUCU.";dbname=".VTISIM."",VTKULLANICI,VTPAROLA);
      	$db->exec("SET NAMES 'utf8'");
      	$db->exec("SET CHARACTER SET utf8");
      	$db->exec("SET COLLATION_CONNECTION = 'utf8_general_ci'");
      

      class xuma {
      public function __construct(PDO $db){
      			$this->link=$db;
      			$_SESSION['dil']=="en" ? $this->dil="en" : $this->dil="tr";
      		}
      

      $a=new xuma($db);
      

      veya
      class db {
      	 private  $HOST_NAME = "localhost";
      	 private  $HOST_USER = "root";
      	 private  $HOST_PASS = "";
      	 private  $DB_NAME   = "ci";
      	 private $db;
      	
      	public function __construct(){
      		$this->db = new PDO("mysql:host={$this->HOST_NAME};dbname={$this->DB_NAME}", $this->HOST_USER, $this->HOST_PASS);
      	}
      	public function kullanicilar()
      	{
      		$sorgu=$this->db->prepare("select * from  users");
      		$sorgu->execute();
      		$sonuc=$sorgu->fetchAll(PDO::FETCH_ASSOC);
      		return $sonuc;
      	}
      }
      $a=new db;
      print_r($a->kullanicilar());
      

      veya
      class xuma extends PDO { 
      	private  $HOST_NAME = "localhost";
      	private  $HOST_USER = "root";
      	private  $HOST_PASS = "";
      	private  $DB_NAME   = "ci";
      	private $db;
          public function __construct() { 
              parent::__construct("mysql:host={$this->HOST_NAME};dbname={$this->DB_NAME}", $this->HOST_USER, $this->HOST_PASS); 
          } 
      } 
      $a=new xuma;
      $sorgu=$a->prepare("select * from  users");
      $sorgu->execute();
      $sonuc=$sorgu->fetchAll(PDO::FETCH_ASSOC);
      print_r($sonuc);
      
      9 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      teşekkr ederim peki bi tavisye edebileceğiniz bi kaynakı varmı PDO ile ilgili kitap , e-kitap , web sitesi ,döküman falan
      9 yıl önce yazılmış
    • xuma adlı üyenin fotoğrafı xuma
      9 yıl önce yazılmış
    • siyahbeyaz adlı üyenin fotoğrafı siyahbeyaz
      PDO yu kafanda fazla buyutme bence belli baslı fonksiyonları var bu fonksiyonlar cokta güvenli.

      $sql = $db->query("select * from"); // bildigin basit bir sorgu.
      


      $sql = $db->prepare("Select * from tablo where id=? AND k_adi=?"); // GET ve veri eklemede kullanılan sql injectiona karsı fonksiyon. fonksiyon icin belirtigin soru isaretleri sirasina göre veri degerini arrraya alman lazım.
      $sql->execute(array($_GET["id"],$_GET["k_adi"]));
      


      gibi.

      veri listeleme
      $sql = $db->query("select * from"); // bildigin basit bir sorgu.
      while($yaz=$sq->fetch(PDO::FETCH_OBJ)) {
      echo $yaz->baslik;
      }
      


      xuma yeteri kadar ornek vermis..
      ek olarak

      veri varmı yokmu mysql_num_rows olayınıda yazayım
      $sql = $db->query("select * from"); // bildigin basit bir sorgu.
      $kontrol = $sql->fetchColumn();
      if($kontrol > 0) {
      echo "Veritabanı tablonuzda ".$kontrol." kayıt bulundu";
      } else {
      echo "veri bulunamadı.. kontrol degeri = ".$kontrol;
      }
       
      
      9 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      bu tarz bi sınıf yapmam sizce mantıklımı yani konuya hâla tam hakim olamadığım için deneye deneye öğrenmeye çalşyorum

      class db {
      
      private  $HOST_NAME = "localhost";
      private  $HOST_USER = "root";
      private  $HOST_PASS = "root";
      private  $DB_NAME   = "furkancelikdb";
      private $db;
      
      
      	public function __construct(){
      	$this->db = new PDO("mysql:host={$this->HOST_NAME};dbname={$this->DB_NAME}", $this->HOST_USER, $this->HOST_PASS);
      	}
      
      	public function INSERT($sorgu)
      	    {
      	        $sql=$this->db->exec("$sorgu");
      	        if ($sql > 0 ) { echo "Başarılı"; }
      			else { echo "Olmadı"; }
      	    }
      	public function SELECT($sorgu){
          $STH = $this->db->query("$sorgu");     
          $STH->setFetchMode(PDO::FETCH_OBJ);   
         return $STH->fetch();
      	}
      
      }
      
      }
      
      9 yıl önce yazılmış
    • siyahbeyaz adlı üyenin fotoğrafı siyahbeyaz
      Bana kalirsa hiç class yapma udo hazır bir class bağlantı kodlarını include ile çek sql injection için prepare kullan yeterlidir
      9 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      işte bnde bunu öğrenmeye çlşıyordum yani bi sınıf çağırayımmı yoksa hazır bişiler warmı diye
      9 yıl önce yazılmış
    • bagova adlı üyenin fotoğrafı bagova
      Ben mysql_connect kullanıyorum ve aşağıdaki geleneksel yöntemi kullanıyorum.

      1. Veri çekme

      $sql=mysql_query("SELECT baslik from haber where id=5 limit 0,1");
      while($veri=mysql_fetch_assoc($sql))
      {
      echo $veri['baslik'];
      }
      


      2. Veri ekleme

      $ekle=mysql_query("INSERT INTO haber (baslik) VALUES ('lorem ipsum') ");
      

      Arkadaşlar PDO ya geçmek istiyorum bu durumda ne yapmalıyım? mysql_connect ayarlarımı değiştirmem gerekiyor mu? BU yazdığınız kodları direk sayfama yazdığımda geçmiş oluyormuyum? Veri eklerken güvenliği nasıl sağlıyoruz?
      9 yıl önce yazılmış
    • siyahbeyaz adlı üyenin fotoğrafı siyahbeyaz
      evet bir cok yerde degisiklik yapacaksınız. ekstra bir kac kod ekliyeceksiniz.. mysql_num_rows larınız mesela. mysql_query ler degisecek sql injectiondan kacmak icin faarklı methodlar uygulayacaksınız ama avantajı cok guzel. misal bir fetch_all ozelligi var. tum datayi array olarak verior. ama mysql_connect de siz kalkıp bunu bi while dongusune sokmanız lazım. saysay bitmez avantajı.
      http://net.tutsplus.com/tutorials/php/php-database-access-are-you-doing-it-correctly/ burda biraz bilgi var. kullanımı ilgili ile
      9 yıl önce yazılmış