データベースでレコードが更新された場合にブール値を返す方法は?
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;
}
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;
何かがうまくいかなかったが、データベースでコードが更新された場合、それは本当に不安定な状態のように聞こえます。例外でトランザクションとロールバックを使用する方がおそらく良いでしょう。
(未テスト)のようなもの:
$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を処理することはおそらく望ましくありません。