如何检查行是否已更新?

I'l*_*ack 22 php mysql pdo

如果记录已在数据库上更新,如何返回布尔值?

例:

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;
}
Run Code Online (Sandbox Code Playgroud)

CD0*_*001 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;
Run Code Online (Sandbox Code Playgroud)

  • 我想补充说,如果有实际的更改,则返回true,但是当行已经完全按照您的更新方式返回时返回false.这可能听起来合乎逻辑,但如果您想使用此功能检查更新的条件下是否存在行,则不能使用此功能. (2认同)