Nasıl hazırlanmış tablolar ile uygun bir mysqli uzantısı sınıf yapmak için?

5 Cevap php

Ben iyi bir örnek için web dolaştılar ama hiçbir şey bulamıyorum.

Ben bir yardımcı sınıf yapmak için mysqli sınıfını genişletmek için çalışıyorum bu olacak bazı karmaşıklıklar uzak soyut. Ben başarmak istiyorsanız ana şeylerden biri hazırlanan tabloların kullanımını sağlamaktır.

Gerçekten nereden başlayacağımı bilmiyorum, ya da bir sınıf düzgün giriş ve çıkış nasıl işleneceğini. Başka bir sorun hazırlanmış deyimleri kullanırken ben bir dizi olarak çıkış verilerine kuramıyorum olmasıdır.

Ben gerçekten doğru yönde bana gelin basit bir örnek kullanabilirsiniz.

Teşekkürler!

5 Cevap

Bunu yapmak için bir sarıcı sınıfı yazdık - bu MySQLi veya PDO ile ya Parametrelenmiş sorguları için benzer bir arayüz sağlar. Arabirimi büyük ölçüde kendi kodu basitleştiren tek bir kod doğrultusunda, Parametrelenmiş SQL çalıştırmasına izin veriyor.

http://www.robpoyntz.com/blog/?p=191

da kontrol Kohana Veritabanı Lib .. Bu hemen hemen yok ne istediğinizi: http://docs.kohanaphp.com/libraries/database

Zend Framework kontrol ve kesinlikle modüler Zend_Db class, özellikle mysqli adaptörü bulunuyor.

Aslında kendi versiyonunu yazmak isteyen konum varsayarak (diğer cevaplar ettiler varolan kitaplıkları birini kullanarak karşı - ve bu çok iyi bir seçenek vardır) ...

Burada yararlı incelemek için bulabilirsiniz fonksiyonların bir çift vardır. İlk bir ilişkisel dizi için bir sorgunun sonuçlarını bağlamak sağlar ve ikinci iki diziler, tek tuşları sıralı bir dizi ve bu anahtarlar için veri diğer bir ilişkisel dizi geçmek ve sahip olmanızı sağlar içine veri bağlı Bir hazır deyim:

function stmt_bind_assoc (&$stmt, &$out) {
    $data = mysqli_stmt_result_metadata($stmt);
    $fields = array();
    $out = array();

    $fields[0] = $stmt;
    $count = 1;

    while($field = mysqli_fetch_field($data)) {
        $fields[$count] = &$out[$field->name];
        $count++;
    }
    call_user_func_array(mysqli_stmt_bind_result, $fields);
}

function stmt_bind_params($stmt, $fields, $data) {
    // Dynamically build up the arguments for bind_param
    $paramstr = '';
    $params = array();
    foreach($fields as $key)
    {
        if(is_float($data[$key]))
            $paramstr .= 'd';
        elseif(is_int($data[$key]))
            $paramstr .= 'i';
        else
            $paramstr .= 's';
        $params[] = $data[$key];
    }
    array_unshift($params, $stmt, $paramstr);
    // and then call bind_param with the proper arguments
    call_user_func_array('mysqli_stmt_bind_param', $params);
}