【问题标题】:zend framework 2 SQL update and insert affected rows (ZF2)zend 框架 2 SQL 更新和插入受影响的行 (ZF2)
【发布时间】:2013-01-31 03:57:48
【问题描述】:

这是一个简单的问题,但我环顾四周并找不到答案。 如何从 ZF2 中的更新/插入 SQL 查询中提取受影响的行数?

以下代码对我来说运行良好(它确实会更新),但我想执行正确的错误检查:

public function updateSomeField($id, $some_field){
    $data = array(
        'some_field'  => $some_field
    );

    $sql = new Sql($this->dbAdapter);
    $update = $sql->update();
    $update->table('Table1');
    $update->set($data);
    $update->where(array('id' => $id));
    $statement = $sql->prepareStatementForSqlObject($update);

    // need help with the code below...
    // got this from here:
    // http://stackoverflow.com/questions/11491249/zend-framework-db-update-result
    $result = 0;
    try {
        $result = $statement->execute();        // works fine
    } catch (\Exception $e) {
        die('Error: ' . $e->getMessage());
    }
    if (empty($result)) {                       // not sure if this is applicable??
        die('Zero rows affected');
    }

    return $result;                             // ideally, I'd like to return $numRows
}

目前,成功时,$result 是一个对象。我试图对它进行 vardump,但它没有显示值。

任何帮助将不胜感激。谢谢。

【问题讨论】:

标签: sql insert zend-framework2 insert-update error-checking


【解决方案1】:

这是作为答案的运行代码(因为它比在 cmets 中更容易找到)

try {
    $affectedRows = $statement->execute()->getAffectedRows();
} catch (\Exception $e) {
    die('Error: ' . $e->getMessage());
}
if (empty($affectedRows)) {
    die('Zero rows affected');
}

return $affectedRows;

【讨论】:

    【解决方案2】:

    你试过了吗:

    if ( $result->count() === 0 ) {
      die('Zero rows affected');
    }
    

    ?据我记得,它计算了任何可数的东西,包括affected_rows。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      相关资源
      最近更新 更多