PHP'nin PDO Select dönüş biçimini değiştirme

0 Cevap php

Ben hayatımı daha kolay ve adil bir miktar daha güvenli hale getirmek için kendi PDO sarıcı yazıyorum.

Standart bir sorgu gibi görünüyor:

$user = $db->select('users')
           ->eq('twitter_id', $twitter_id)
           ->limit(1)
           ->prepare()
        ->exec();

Bu sorgu oluşturur:

SELECT * FROM users WHERE twitter_id = :twitter_id LIMIT 1

Ben, şu anda, onu istediğiniz gibi bu mükemmel çalışıyor. Ben birden çok satır dönmek için bir sorgu var zaman bir sorun haline çalıştıran nerede olduğumu.

Benim apps Ben kapmak ve tek seferde kullanmak istiyorum ve ben yapabilirim bazı dinamik ayarlarını depolayan böyle bir sorgu çalıştırarak:

$share_datas = $db->select('settings', 'setting, value')
                  ->prepare()
               ->exec();

Hangi oluşturur:

SELECT setting, value FROM settings

Hangi döndürür:

Array
(
    [0] => Array
        (
            [setting] => since_id
            [value] => 17124357332
        )

    [1] => Array
        (
            [setting] => last_dm
            [value] => 1271237111
        )
)

Fonksiyonu prepare() sorgu için parçaları bir araya koyar ve fonksiyon exec() params bağlar ve dizi döndürür.

    function exec()
    {
//      echo 'vars: <pre>'.print_r($this->sql_vars, true).'</pre>';
        $stmt = $this->dbh->prepare($this->sql_last_query); 
        foreach($this->sql_vars as $key => $val)
        {
            if('date_time' === $key) continue;
            $bind = $stmt->bindValue($key, $val);
        }
        $stmt->execute();
        $this->sql_vars = array();
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

Şimdi soru: aşağıda gibi döner ve herhangi bir ek döngüler kaçınan bir dizi dönmek böylece ben exec() ya da sorgu kendisini değiştirebilirsiniz ki bir yolu var mı?

Array
(
     [since_id] => 17124357332
     [last_dm]  => 1271237111
)

0 Cevap