PHP nasıl MySQL işlemler kullanabilirim?

0 Cevap php

Üzgünüm, bu çok genel bir soru ama ben bunu daraltmak için çalışacağız.

MySQL / PHP bütün bu işlem şey yeni ama oldukça basit görünüyor. Ben sadece mysql mysqli veya PDO değil kullanıyorum. Bazı sorgular değil, diğerleri geri haddeleme gibi görünüyor bir komut dosyası var. Bu benim için keşfedilmemiş bir bölge olduğunu yani ne olup bittiğini hiçbir fikrim yok.

Ben aynı zamanda autocommit devre dışı anlıyorum ki, mysql_query('START TRANSACTION;') ile işlem başlar. Sonra karmaşık bir sürü kod var ve ben bir sorgu yaptığınızda böyle bir şey mysql_query($sql) or $error = "Oh noes!". Sonra periyodik I $error boş değil ve eğer değilse ben mysql_query('ROLLBACK;') ve die($error) yaparsanız denetler error_check() adında bir işlevi var . Daha sonra kod ben mysql_query('COMMIT;'). Ama iki sorguları yapmak ve daha sonra bilerek bir hata atmak eğer, demek sadece set $ hata = ilk sorgu geri alır ama ikincisi yok gibi bir şey görünüyor.

Ne yanlış gidiyor olabilir? Ben bilmem işlemler ile bazı FRİKİKLERİNDEN var mı? Ben bu işlemler başlatmak nasıl iyi bir anlayışa sahip ve bunu içine PHP karıştırmak özellikle bitmiyor ...

EDIT: My example was overly simplified I actually have at least two transactions doing INSERT, UPDATE or DELETE on separate tables. But before I execute each of those statements I backup the rows in corresponding "history" tables to allow undoing. It looks like the manipulation of the main tables gets rolled back but entries in the history tables remain.

EDIT2: Doh! As I finished typing the previous edit it dawned on me...there must be something wrong with those particular tables...for some reason they were all set as MyISAM.

0 Cevap