Keep in mind this bug: https://bugs.php.net/bug.php?id=66528
you could not rely on commit() return value while using MySql
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::commit — Bir toplu hareketi veritabanına gönderir
Bir toplu hareketi veritabanına gönderir ve bir PDO::beginTransaction() çağrısı ile yeni bir toplu hareket başlatılıncaya kadar geçerli olmak üzere bağlantıyı ototeslim kipine sokar.
Bu işlevin bağımsız değişkeni yoktur.
Başarı durumunda true
, başarısızlık durumunda false
döner.
Etkin bir hareket yoksa bir PDOException yavrulanır.
Bilginize:
PDO::ATTR_ERRMODE
niteliğiPDO::ERRMODE_EXCEPTION
değilse bile bir istisna yavrulanır.
Örnek 1 - Temel bir hareket teslimatı
<?php
/* Ototeslim kipini kapatıp bir hareket başlatalım */
$dbh->beginTransaction();
/* Çok sayıda kaydı ya hep ya hiç deyip veritabanına yerleştirelim */
$sql = 'INSERT INTO fruit
(name, colour, calories)
VALUES (?, ?, ?)';
$sth = $dbh->prepare($sql);
foreach ($fruits as $fruit) {
$sth->execute(array(
$fruit->name,
$fruit->colour,
$fruit->calories,
));
}
/* Değişiklikleri teslim edelim */
$dbh->commit();
/* Veritabanı bağlantısı tekrar ototeslim kipinde */
?>
Örnek 2 - Bir toplu hareketin teslim edilmesi
<?php
/* Ototeslim kipini kapatıp bir toplu hareket başlatalım */
$dbh->beginTransaction();
/* Veritabanı şemasını değiştirelim */
$sth = $dbh->exec("DROP TABLE fruit");
/* Değişiklikleri etkin kılalım */
$dbh->commit();
/* Veritabanı bağlantısı tekrar ototeslim kipinde. */
?>
Bilginize: (VTD: Veri Tanımlama Dili - ing: DDL) Tüm veritabanları hareketlerin VTD deyimleri üzerine işlem yapmasına izin vermez: Bazıları hata üretir, bazıları da (MySQL dahil) ilk VTD deyimine rastladığı anda hareketi otomatikman teslim eder.
Keep in mind this bug: https://bugs.php.net/bug.php?id=66528
you could not rely on commit() return value while using MySql