我在数据库中更新一条记录:
$res = $query->update()
->set(['activation' => true])
->where(['sha1' => $hash])
->execute();
请求本身正确执行(当您更改数据库本身时,这是可见的。)。
然后我尝试接收方法execute()的结果:
debug($res->fetchAll('assoc'));
但是给出了错误:数据库错误。
如果我不使用 - > fetchAll('assoc') - 一切正常,但我不知道请求是否正确完成。
我做错了什么?或者我怎么知道执行execute()方法的结果?
答案 0 :(得分:0)
您可能希望在结果上调用->rowCount()
以查看它是否会影响多个行,或者对结果->errorInfo()
进行调整以获取任何相关错误。由于这不是一个SELECT
查询,因此没有任何resultSet到" fetch",因此调用->fetchAll()
确实是错误的方法。
答案 1 :(得分:0)
事实证明,为了找出是否执行了查询以更新数据库中的数据,您需要:
// Create the request object
$query = $this->Users->query();
// Prepare the terms of the request
$query->update()
->set(['activation' => true])
->where(['sha1' => $hash]);
// We try to execute the query and immediately check the result
if($query->execute()->rowCount() === 1){
// Query succeeded
} else {
// Request failed
}