如果数据库上的记录已更新,如何返回布尔值?
try {
$SQL = "UPDATE addressbook SET valid = '0' WHERE id = :id";
$query = $this->db->prepare($SQL);
$query->bindValue(":id", $id);
$query->execute();
//How do I know if record has been updated?
} catch (PDOException $e) {
$j['success'] = 'false';
echo json_encode($j);
return;
}
答案 0 :(得分:41)
PDOStatement :: rowCount()返回受相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE语句影响的行数。
如果关联的PDOStatement执行的最后一条SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,并不保证所有数据库都有这种行为,不应依赖于便携式应用程序。
PDOStatement::rowCount (PHP 5> = 5.1.0,PECL pdo> = 0.1.0)
return $query->rowCount() ? true : false;
答案 1 :(得分:1)
如果出现问题但你的代码在数据库中更新了,那听起来就像是一个非常不稳定的状态。在异常时使用事务和回滚可能更好。
像(未经测试)的东西:
$this->db->beginTransaction();
try {
$SQL = "UPDATE addressbook SET valid = '0' WHERE id = :id";
$query = $this->db->prepare($SQL);
$query->bindValue(":id", $id);
$query->execute();
$this->db->commit();
return true;
//How do I know if record has been updated?
} catch (PDOException $e) {
$this->db->rollback();
return false;
}
此外,您可能不希望将JSON与此代码混合在一起,将其分开并让您的类外部的内容处理JSON。