Lässt sich der Fall, dass wir zwei separate Klassen haben, jedes besitzt ein mysqli
Objekt für Datenbankoperationen verwenden.PHP-Transaktionsverarbeitung mit mehreren mysqli-Objekt
class A{
protected $mysqliObject;
public function __constructor(){
$this->mysqliObject=new mysqli(...)
}
public function doSomething(){
$this->mysqliObject->query(...);
}
}
class B{
protected $mysqliObject;
public function __constructor(){
$this->mysqliObject=new mysqli(...)
}
public function doSomething(){
$this->mysqliObject->query(...);
}
}
Die doSomething()
Methoden verwenden, um die $mysqliObject
für eine Datenbankabfrage (SELECT, UPDATE, DELETE, etc ...). Ich möchte Folgendes außerhalb tun:
// Start point
$aObject=new A();
$bObject=new B();
$aObject->doSomething();
$bObject->doSomething();
// End point
... aber ich möchte beide Abfragen zurücksetzen, wenn einer von ihnen fehlschlägt. Wie kann ich das machen?
- Kann ich ein brandneues
mysqli
Objekt bei „Startpunkt“, und verwenden Sie es auf „Endpunkt“ die Datenbankabfrage vonclass A
undclass B
zu begehen oder Rollback? - Muss ich außerhalb erstellen, und übergeben Sie die gleichen
$mysqliObject
an die__constructor()
class A
undclass B
, und verwenden Sie das Rollback oder Commit (außerhalb).
Möchten mehr Techniken mit Pro-Con's sehen.
Grundsätzlich wollte meine Frage einen anderen Ansatz als diesen fragen. Vielleicht wollte ich nur ein bisschen schummeln und OOP aus dem Fenster werfen. Ich werde weitermachen, wie du es erwähnt hast. – Dyin
Viel Glück damit. Das könnte in imaginären Programmen funktionieren, aber in der Praxis werden Sie darauf stoßen, dass [Befehle nicht mehr synchron sind] (http://dev.mysql.com/doc/refman/5.0/en/commands-out-of-sync.html) . Die Frage besagt eindeutig die Verwendung von mysqli. – doug65536