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');
私は自分自身にするために期待していたが、私はよく分かりません。 '$ db-> fetchAll($ sql、2);'はmysql_fetch_arrayのように振る舞いますか?また、すべてのスクリプトに存在しなければならない冗長なコードがあるように見えるのはなぜですか?私は、その試行の終わりまですべてを扱う別のクラスを作ることができますか、文をキャッチするか、それは悪い習慣とみなされますか? –
@Jon - fetchAllはデフォルトで連想配列を返します(変更可能、fetchRow、fetchCol、fetchOneなどもあります)。長いtry..catchは、理想的にはブートストラップ(またはインクルードなど)内のアプリケーションに一度しか表示されないので、それは実際問題ではありません。 – karim79
これは私の行く方法のように見えます。あなたのすべての協力に感謝します! –