如何在 Zend 2 中执行更新查询?

How do I execute an update query in Zend 2?

我尝试不使用函数 execute(),我尝试以这种方式执行更新查询:

public function __construct(Adapter $adapter) {
    ini_set('display_errors', true);
    $this->adapter = $adapter;
}

public function getUserProfile($array_post) {
    $data = array(
        'username' => $array_post['username'],
        'email' => $array_post['mail']
    );

    $where = $this->adapter->quoteInto('id = ?', $array_post['userid']);

    $this->update($data, $where);
}

但我不知道 ZEND 2 中此 quoteInto() 的等效功能是什么。现在我得到一个空白页,执行时没有错误,没有什么 。你能帮我用这个方法吗?谢谢

更新 我也这样试过:

$data = array(
    'username' => $array_post['username'],
    'email' => $array_post['mail']
);

$update = $this->adapter->update();
$update = $update->set($data);
$update->where(array('id' => $array_post['userid']));

与 Zend 1 相比,数据库在 Zend 2 中的工作方式有很大不同。适配器是一个非常轻量级的对象,不包含任何 CRUD 方法。如果要使用这些方法,则需要使用 TableGateway。

或者您可以创建一个 SQL 对象,然后使用适配器执行它。

我创建了一个非常简单的活动记录实现(它的工作方式很像 Zend 1 表)以使其更简单一些。如果您想查看,这里有 link:https://github.com/forrestLyman/ZendActiveRecord

这是使用 ForrestLyman 提到的 TableGateway 的示例。

public function updateAction($data)
         {
             $adapter = $this->tableGateway->getAdapter();
             $sql = new Sql($adapter);
             $update = $sql->update();
             $update->table('table_name');
             $update->set($data);
             $update->where('action_id = '.$data['action_id'].'');

             $statement = $sql->prepareStatementForSqlObject($update);
             $result = $statement->execute();

             $flag = $result->getAffectedRows();
             if(!($flag)){
                     return false;
             }else{
                     return true;
             }

    }