• 20-06-2013, 13:17:13
    #1
    merhaba.

    database class'ı kullanarak mysql işlemleri yapılıyr..

    database.php
    <?php
    
    class Database extends PDO
    {
        
        public function __construct($DB_TYPE, $DB_HOST, $DB_NAME, $DB_USER, $DB_PASS)
        {
            parent::__construct($DB_TYPE.':host='.$DB_HOST.';dbname='.$DB_NAME, $DB_USER, $DB_PASS);
            
            //parent::setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTIONS);
        }
        
        /**
         * select
         * @param string $sql An SQL string
         * @param array $array Paramters to bind
         * @param constant $fetchMode A PDO Fetch mode
         * @return mixed
         */
        public function select($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC)
        {
            $sth = $this->prepare($sql);
            foreach ($array as $key => $value) {
                $sth->bindValue("$key", $value);
            }
            
            $sth->execute();
            return $sth->fetchAll($fetchMode);
        }
        
        /**
         * insert
         * @param string $table A name of table to insert into
         * @param string $data An associative array
         */
        public function insert($table, $data)
        {
            ksort($data);
            
            $fieldNames = implode('`, `', array_keys($data));
            $fieldValues = ':' . implode(', :', array_keys($data));
            
            $sth = $this->prepare("INSERT INTO $table (`$fieldNames`) VALUES ($fieldValues)");
            
            foreach ($data as $key => $value) {
                $sth->bindValue(":$key", $value);
            }
            
            $sth->execute();
        }
        
        /**
         * update
         * @param string $table A name of table to insert into
         * @param string $data An associative array
         * @param string $where the WHERE query part
         */
        public function update($table, $data, $where)
        {
            ksort($data);
            
            $fieldDetails = NULL;
            foreach($data as $key=> $value) {
                $fieldDetails .= "`$key`=:$key,";
            }
            $fieldDetails = rtrim($fieldDetails, ',');
            
            $sth = $this->prepare("UPDATE $table SET $fieldDetails WHERE $where");
            
            foreach ($data as $key => $value) {
                $sth->bindValue(":$key", $value);
            }
            
            $sth->execute();
        }
        
        /**
         * delete
         * 
         * @param string $table
         * @param string $where
         * @param integer $limit
         * @return integer Affected Rows
         */
        public function delete($table, $where, $limit = 1)
        {
            return $this->exec("DELETE FROM $table WHERE $where LIMIT $limit");
        }
        
    }
    model da this->db->insert(bilgiler); yazarak işleyebiliyorum.

    fakat benim istediğim aşşağıdaki query'leri PDO ile database class ı kullanarak yapmak. yani üssteki class a yeni fonksiyonlar ekleyerek yada o kısmı kullanarak çalıştırmak istiyorum..

    kod :
    $ka = "klipler";
    $t=mysql_query("select * from kategori where kategori='$ka'");
    	 
    	if(mysql_num_rows($t)>0){
    		$y=mysql_fetch_object($t);
    		return $y->id;
    	}
    	else{
    		mysql_query("insert into kategori set kategori='$ka'");
    		return mysql_insert_id();
    	}
    }
    
    ### 2. kısım
    
    $sonuc=mysql_num_rows(mysql_query("select * from yazi where youtube_id='$video_id'"));
    sağolun..
  • 20-06-2013, 14:07:03
    #2
    Yukarıda yazdığınız kodlar epey ünlüdür. jesse nasıl kullanacağını da anlatıyor diye hatırlıyorum ama sizin kodları uyarlayalım.

    $ka = 'klipler';
    
    $t = $this->db->select("SELECT * FROM kategori where kategori = :kategori", array('kategori'=>$ka));
    
    if($sorgu->rowCount() > 0){
    	return $t[0]["id"];
    }else{
    	$sorgu = $this->db->insert('kategori', array('kategori'=>$ka));
    	return $sorgu->lastInsertId;
    }
    
    ### 2. kısım
    
    $sonuc = $this->db->select("SELECT * FROM yazi WHERE youtube_id = :youtube_id", array('youtube_id'=>$video_id));
    
    echo $sonuc->rowCount();
  • 20-06-2013, 14:11:19
    #3
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    Yukarıda yazdığınız kodlar epey ünlüdür. jesse nasıl kullanacağını da anlatıyor diye hatırlıyorum ama sizin kodları uyarlayalım.

    $ka = 'klipler';
    
    $t = $this->db->select("SELECT * FROM kategori where kategori = :kategori", array('kategori'=>$ka));
    
    if($sorgu->rowCount() > 0){
    	return $t[0]["id"];
    }else{
    	$sorgu = $this->db->insert('kategori', array('kategori'=>$ka));
    	return $sorgu->lastInsertId;
    }
    
    ### 2. kısım
    
    $sonuc = $this->db->select("SELECT * FROM yazi WHERE youtube_id = :youtube_id", array('youtube_id'=>$video_id));
    
    echo $sonuc->rowCount();
    jesse adamım ya. normal mysql komutlarını kullanmak daha basit olur ama, böyle temelden gidelim bakalım. tşkler, şuan deneme şansım yok fakat bir sorun yok gibi duruyor.. jesse için geliştirdiğin kütüphane yada script yamaların varsa paylaşırsan sevinirim hocam jesseyi tanıyan türk pek çıkmıyor da.
  • 20-06-2013, 21:27:03
    #4
    bLoo adlı üyeden alıntı: mesajı görüntüle
    jesse adamım ya. normal mysql komutlarını kullanmak daha basit olur ama, böyle temelden gidelim bakalım. tşkler, şuan deneme şansım yok fakat bir sorun yok gibi duruyor.. jesse için geliştirdiğin kütüphane yada script yamaların varsa paylaşırsan sevinirim hocam jesseyi tanıyan türk pek çıkmıyor da.
    ben tanıyorum sağolsun @bayGarez arkadaşta yardımcı olmuştur. mvc yapısını jream ile ögreniyorum halen
  • 21-06-2013, 18:19:24
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    PDO'yu 'extend' ederek çalışmak pek iyi değil. Aslında normalde sorun olmaz da ben 'serialize' etmek zorunda kalmıştım. PDO da hata vermişti. Sınıfı 'serialize' etmek istediğinizde bu haliyle hata alırsınız.