Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielcode für PHP-Operationen und MySQL-Transaktionen

Beispielcode für PHP-Operationen und MySQL-Transaktionen

怪我咯
怪我咯Original
2017-07-12 15:57:341131Durchsuche

MySQL-Transaktionen werden hauptsächlich zur Verarbeitung von Daten mit großen Vorgängen und hoher Komplexität verwendet. Wenn Sie beispielsweise im Personalverwaltungssystem eine Person löschen, müssen Sie die grundlegenden Informationen der Person löschen und auch die mit der Person verbundenen Informationen wie Postfach, Artikel usw. löschen. Auf diese Weise werden diese DatenbankoperationenDie Anweisung stellt eine Transaktion dar!

Dieser Artikel stellt hauptsächlich die Methode zum Betrieb von MySQL-Transaktionen vor und analysiert die ACID-Eigenschaften im Detail in Form von Beispielen. Freunde in Not können sich darauf beziehen

Die Beispiele in diesem Artikel beschreiben, wie PHP MySQL-Transaktionen ausführt, und werden Ihnen als Referenz zur Verfügung gestellt. Die spezifische Methode lautet wie folgt:

Im Allgemeinen sollten Transaktionen ACID-Eigenschaften aufweisen. Die sogenannte ACID wird mit den Anfangsbuchstaben der vier Wörter Atomic (Atomizität), Consistent (Konsistenz), Insulated (Isolation) und Durable (Persistenz) geschrieben. Nehmen wir als Beispiel „Banküberweisung“, um ihre Bedeutung zu erklären. :

① Atomarität: Die Anweisungen, aus denen eine Transaktion besteht, bilden eine logische Einheit und nur ein Teil davon kann nicht ausgeführt werden. Mit anderen Worten: Eine Transaktion ist die kleinste unteilbare Einheit. Beispiel: Bei der Überweisung muss der Überweisungsbetrag gleichzeitig von einem Konto abgebucht und einem anderen Konto gutgeschrieben werden. Es ist unzumutbar, nur ein Konto zu ändern.
② Konsistenz: Die Datenbank ist vor und nach der Ausführung der Transaktionsverarbeitung konsistent. Das heißt, die Transaktion sollte den Systemstatus korrekt umwandeln. Beispiel: Beim Banküberweisungsprozess wird entweder der Überweisungsbetrag von einem Konto auf ein anderes Konto übertragen, oder beide Konten bleiben unverändert und es liegt keine andere Situation vor.
③ Isolation: Eine Transaktion hat keine Auswirkungen auf eine andere Transaktion. Das heißt, es ist für jede Transaktion unmöglich, eine Transaktion in einem unvollständigen Zustand zu sehen. Beispielsweise kann sich bei einer Banküberweisung vor der Übermittlung der Überweisungstransaktion eine andere Überweisungstransaktion nur im Wartezustand befinden.
④ Haltbarkeit: Die Auswirkungen der Transaktionsverarbeitung können dauerhaft gespeichert werden. Umgekehrt sollten Transaktionen allen Ausfällen standhalten können, einschließlich Server-, Prozess-, Kommunikations-, Medienausfällen usw. Beispiel: Beim Banküberweisungsprozess muss der Kontostand nach der Überweisung gespeichert werden.

In PHP hat MySQL die zugehörigen Vorgänge von MySQL-Transaktionen gut gekapselt. Das folgende Beispiel:

Der Code lautet wie folgt:

$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";
$sql2 = "update ScoreDetail  set FScore = 300 where ID= '123456'";
$sql3 = "insert into  ScoreDetail ID,Score) values ('123456',60)";
$mysqli = new mysqli('localhost','root','','DB_Lib2Test');
$mysqli->autocommit(false);//开始事物
$mysqli->query($sql1);
$mysqli->query($sql2);
if(!$mysqli->errno){
  $mysqli->commit();
  echo 'ok';
}else{
 echo 'err';
  $mysqli->rollback();
}

Hier verwenden wir die PHP-MySQL-Reihe von -Funktionen , um Transaktionen durchzuführen.

Der Code lautet wie folgt:

$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";
$sql2 = "update ScoreDetail  set FScore = 300 where ID= '123456'";
$sql3 = "insert into  ScoreDetail ID,Score) values ('123456',60)";
$conn = mysql_connect('localhost','root','');
mysql_select_db('DB_Lib2Test');
mysql_query('start transaction');
//mysql_query('SET autocommit=0');
mysql_query($sql1);
mysql_query($sql2);
if(mysql_errno ()){
    mysql_query('rollback');
    echo 'err';
}else{
    mysql_query('commit');
    echo 'ok';
}
// mysql_query('SET autocommit=1');
// mysql_query($sql3);

Hinweis hier:

MyISAM: unterstützt keine Transaktionen und wird für schreibgeschützte Programme verwendet zur Verbesserung der Leistung
InnoDB: unterstützt ACID-Transaktionen, Sperren auf Zeilenebene und Parallelität
Berkeley DB: unterstützt Transaktionen

Das obige ist der detaillierte Inhalt vonBeispielcode für PHP-Operationen und MySQL-Transaktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn