Tài liệu PHP PDO::commit() nói rằng phương thức trả về TRUE thành công hoặc FALSE khi lỗi. Điều này có nói đến sự thành công hay thất bại của việc thực hiện câu lệnh giữa beginTransaction() và commit() không?PDO :: commit() thành công hay thất bại
Ví dụ, từ các tài liệu:
$dbh->beginTransaction();
$sql = 'INSERT INTO fruit (name, colour, calories) VALUES (?, ?, ?)';
$sth = $dbh->prepare($sql);
foreach ($fruits as $fruit) {
$sth->execute([
$fruit->name,
$fruit->colour,
$fruit->calories,
]);
}
$dbh->commit();
Nếu bất kỳ hành trên thất bại, sẽ phương pháp() cam kết trả về false vì "tất cả-hoặc-không có gì cơ sở" giao dịch nguyên tử?
Tôi không thực sự nhớ là cần phải cam kết trong mã cơ sở, bạn đã thử làm điều đó mà không có nó? – Jonast92
Tôi không chắc mình hiểu.Điểm giao dịch thủ công là để đảm bảo rằng nhiều câu lệnh đều thành công hoặc không có. –
Tôi nghĩ rằng bạn đang suy nghĩ quá mức. Nếu một trong những thất bại trong kịch bản này thì rất có thể tất cả sẽ thất bại và ngược lại. Chỉ cần thêm xử lý lỗi thích hợp vào mã và nếu bạn thực sự lo ngại về những gì không thành công thì chỉ cần đăng nhập nó. Tôi đã không bao giờ phải sử dụng cam kết trong mã phía máy chủ, tôi thấy nó không chắc rằng bạn phải. – Jonast92