Ben beginTransaction çağırdığınızda (), tüm infazlar aynı kapsamda takip etmelidir?

2 Cevap

Örnek:

// assume PDO instance here: $dbh

function beginTransaction() {
   global $dbh;
   $dbh->beginTransaction();
}

beginTransaction(); // no typo! called the function above!

$dbh->exec($sql1); // assume $sql1 is there
$dbh->exec($sql2); // assume $sql2 is there

$dbh->commit();

Bir işlem başladı ve TEK kapsam içinde kararlı, ya da ben fonksiyonu ve yöntem çağrıları geniş bir yelpazede üzerinde bir işlem yayılabilir olmalı: Ben sormak deneyin ne? Benim için o denilen nesne arayan hakkında umurumda değil mantıklı olacaktır. Ama örneğin Objective-C / Cocoa, bir UIView animasyon blok kapsamı farkında IS! Yani bir düzlemde bir kuş gibi kafam karıştı.

2 Cevap

Işlem veritabanı tarafında oluyor, ve PHP tarafı değil: Bir işlem çeşitli işlevleri ve yöntem çağrıları üzerine yayılabilir.

A beginTransaction PHP sadece veritabanına "BEGIN TRAN" (or an equivalent) gönderme; sonra, bu işlem için sorumlu olduğu veritabanı sunucusu var - PHP sadece SQL komutları gönderebilirsiniz.


As a sidenote : you are using this function in your example :

function beginTransaction() {
   $dbh->beginTransaction();
}

Eğer kılavuzda global , or pass it as a parameter -- see Variable scope olarak ilan sürece sadece, (not sure if it's because you wrote a quick example, or if it's a real mistake) o $dbh Bu fonksiyonu mevcut olmayacaktır unutmayın.

Işlem bir PDO tanıtıcı $ dbh nesneye bağlı, sanırım. Bu, geçerli kapsam bağımsızdır.

Onlar $ dbh-> beginTransaction () çağrıldıktan sonra yapılır ise $ dbh tarafından işlenen tüm veritabanı sorgularını bu işlemin bir parçası olacaktır.