【问题标题】:Problems connecting to db using Zend db as standalone使用 Zend db 作为独立数据库连接到 db 的问题
【发布时间】:2013-11-06 16:35:33
【问题描述】:

我正在从 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 没有 select()、insert() 方法等。我可以在 ZF1 zend db 中做到这一点。

我收到的错误信息示例:

致命错误:调用未定义的方法 Zend\Db\Adapter\Adapter::select() in

【问题讨论】:

标签: php zend-framework2 zend-db


【解决方案1】:

您似乎认为 ZF2 和 ZF1 是(并且应该是)类兼容的。问题是,它们不是——至少在Zend\Db\Adapter 方面。 ZF2 中的那个更简洁:虽然它有query 方法,但它的主要职责是抽象数据库连接本身。

我想您要查找的内容位于Zend\Db\Sql 区域。假设你的 DB 连接在 $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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多