如何使用 Zend Framework 的 2 Sql 适配器 Class 检查记录是否正在更新

How to check if a record was updating using Zend Framework's 2 Sql Adapter Class

我正在尝试测试 Zend Framework 2 的更新查询是否成功。我正在使用 getAdapter()->query() 方法,但我不确定如何实际测试以查看是否有任何问题返回或是否实际执行。我知道它正在执行(因为我可以通过 mysql workbench 看到更新工作)但我不确定如何实际计数或验证。这是我的代码(我知道这是错误的,但我不知道还能做什么):

 $update = $this->update->table('stores')
                ->set(array('number_of_items' => $number))->where(array('store_name' => $this->store_name));

 $query = $this->sql->getAdapter()->query($this->sql->buildSqlString($update), Adapter::QUERY_MODE_EXECUTE);

 if ($query->count() > 0) {
     // insert the items into the items table
    $insert = $this->insert->into('items')
        ->columns(array('store_id', 'price', 'description'))
        ->values(array($row['store_id'], $price, $item_desc));

    $query = $this->sql->getAdapter()->query(
        $this->sql->buildSqlString($insert),
        Adapter::QUERY_MODE_EXECUTE
    );

    if ($query->count() > 0) {
        return true;
    } else {
        throw new \Exception("Error adding your item to the items table, please try again.");
    }
} else {
    // this is the exception being thrown
    throw new \Exception("An error occurred while adding your item(s) to the store, please try again");
}

现在我知道 count() 很可能只适用于 select 查询,但我不确定如何测试更新和插入是否成功。

如有任何帮助,我们将不胜感激

谢谢

测试更新和插入是否成功。 根据您的代码

  try {
      $affetedRows = $this->insert->into('items')
                    ->columns(array('store_id', 'price', 'description'))
                    ->values(array($row['store_id'], $price, $item_desc));
            }catch (\Exception $e) {
                var_dump($e->getMessage());exit; // see if any exaption Or error in query
            }
    }

var_dump($affetedRows ) // it will return number of affected rows.

deleteupdate 相同,在成功执行后 deleteupdate 也是 returns 受影响的行数。

因此,如果执行成功,您可以检查查询是否成功。

谢谢。