У меня есть некоторый код PDO, и даже если строка не была успешно вставлена в БД, она не дает ошибки...
try {
$options = [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
\PDO::ATTR_EMULATE_PREPARES => false,
];
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// prepare sql and bind parameters
$stmt = $conn->prepare("INSERT INTO reservations (bookingdatetime, remoteip)
VALUES (:bookingdatetime, :remoteip)");
$stmt->bindParam(':bookingdatetime', $bookingdatetime);
$stmt->bindParam(':remoteip', $remoteip);
// insert a row
$stmt->execute();
$bookingid = $conn->lastInsertId();
echo json_encode(array("title" => "WE DID IT!", "body" => " The row # " . $bookingid . " was made!"))
} catch(PDOException $e) {
echo json_encode(array("title" => "Database Error", "body" => $e->getMessage()));
}
$conn = null;
Изменить: я должен сказать, что даже если строка не была успешно создана, она все равно дает «мы сделали это!» сообщение, а идентификатор строки возвращается как 0
Редактировать 2: если я помещу тип в имена столбцов моего оператора подготовки, он все равно вернет «МЫ СДЕЛАЛИ ЭТО» ... это было бы очевидной ошибкой.