我正在从 ZF1 Zend_db迁移到 ZF2。我在连接到数据库并进行简单查询时遇到问题。如果有人能指导我,请表示感谢。下面是我的代码。
这就是我连接到数据库的方式
use Zend'Db'Adapter'Adapter;
$dbo = new Zend'Db'Adapter'Adapter(array(
'driver' => 'pdo_mysql',
'database' => DB_PREFIX.DB_NAME,
'username' => DB_USER,
'password' => DB_PW
));
Zend_Registry::set('db', $dbo);
这是我如何使用它的一个例子。
$this->dbo = Zend_Registry::get('db');
function createData($message,$tags,$userid,$imgsrc){
$data= array(
'message' => $message,
'tags' => $tags,
'imgsrc' => $imgsrc,
'createdtimestamp'=>new Zend_Db_Expr('NOW()'),
'userid' => $userid);
$this->dbo->insert('mydata', $data);
return $this->dbo->lastInsertId();
}
我有一个错误。也就是说$dbo没有选择(),插入()方法等。我可以在ZF1 zend db中做到这一点。
我收到的错误消息示例:
致命错误:调用未定义的方法 Zend''Db''Adapter''Adapter::select() in
你似乎认为 ZF2 和 ZF1 是(并且应该是)类兼容的。问题是,他们不是 - 至少在Zend'Db'Adapter
方面.ZF2 中的那个要简洁得多:虽然它有query
方法,但它的主要职责是抽象数据库连接本身。
我想你要找的位于Zend''Db''Sql区域。假设您的数据库连接在 $dbo
中,您可以基于它创建一个 Sql 对象:
use Zend'Db'Sql as Sql;
$sql = new Sql'Sql($dbo);
。然后创建另一个对象(Zend'Db'Sql'Insert
类):
$insert = $sql->insert('mydata');
$insert->values([
'message' => $message,
'tags' => $tags,
'imgsrc' => $imgsrc,
'createdtimestamp'=>new Sql'Expression('NOW()'),
'userid' => $userid
]);
。然后在查询中使用此对象:
$insertString = $sql->getSqlStringForSqlObject($insert);
$results = $dbo->query($insertString, Adapter::QUERY_MODE_EXECUTE);