如何用准备好的语句创建一个合适的mysqli扩展类?

5 php mysql sql mysqli class

我已经在网上搜索了一个很好的例子,但我找不到任何东西.

我试图扩展mysqli类来创建一个帮助类,它将抽象出一些复杂性.我想要完成的主要事情之一是使用准备好的陈述.

我真的不知道从哪里开始,或者如何在一个类中正确处理输入和输出.另一个问题是,在使用预准备语句时,我无法将数据作为数组输出.

我真的可以用一个简单的例子来指出我正确的方向.

谢谢!

kar*_*m79 5

查看Zend_Db的实现,特别是Zend_Db_Select.事实上,您可能只是选择使用它而不是开发自己的.例子:

 //connect to a database using the mysqli adapter
 //for list of other supported adapters see
 //http://framework.zend.com/manual/en/zend.db.html#zend.db.adapter.adapter-notes
$parameters = array(
                    'host'     => 'xx.xxx.xxx.xxx',
                    'username' => 'test',
                    'password' => 'test',
                    'dbname'   => 'test'
                   );
try {
    $db = Zend_Db::factory('mysqli', $parameters);
    $db->getConnection();
} catch (Zend_Db_Adapter_Exception $e) {
    echo $e->getMessage();
    die('Could not connect to database.');
} catch (Zend_Exception $e) {
    echo $e->getMessage();
    die('Could not connect to database.');
}

//a prepared statement
$sql = 'SELECT * FROM blah WHERE id = ?';
$result = $db->fetchAll($sql, 2);

//example using Zend_Db_Select
$select = $db->select()
             ->from('blah')
             ->where('id = ?',5);
print_r($select->__toString());
$result = $db->fetchAll($select);

//inserting a record
$row = array('name' => 'foo',
             'created' => time()
            );
$db->insert('blah',$row);
$lastInsertId = $db->lastInsertId();

//updating a row
$data = array(
    'name'      => 'bar',
    'updated'   => time()
);

$rowsAffected = $db->update('blah', $data, 'id = 2');    
Run Code Online (Sandbox Code Playgroud)