Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak korzystać z przygotowanych wyciągów połączonych z Transakcjami z PHP?

Po prostu zadzwoń „wykonaj” po wywołaniu „beginTransaction”.

To, gdzie nazwiesz „przygotuj”, nie ma znaczenia.

Oto kompletny przykład:

http://php.net/manual/en/pdo.begintransaction.php

PRZYKŁAD:

 try {
    $cnx = new PDO($dsn,$dbuser,$dbpass);   
    $cnx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $cnx->beginTransaction();

    $stmt=$cxn->prepare("SELECT * FROM users WHERE username=?");
    $stmt->execute(array($user_input));

    $stmt_2=$cxn->prepare("SELECT * FROM othertable WHERE some_column=?");
    $stmt_2->execute(array($user_input_2));

    $cnx->commit();
  }
  catch (Exception $e){
    $cxn->rollback();
    echo "an error has occurred";
  }

PS:1) Zakładam, oczywiście, że $user_input i $user_input_2 są dostępne natychmiast. Nie chcesz, aby Twoja transakcja zawieszała się zbyt długo;)

2) Na podstawie powyższej odpowiedzi na komentarz, myślę, że możesz mylić "wykonaj" i "rozpocznij translację/zatwierdzanie". Proszę spojrzeć na mój link.

3) Czy w ogóle potrzebujesz transakcja? Po prostu robisz dwie "wybierz".

4) Na koniec, dlaczego nie zrobić jednego „dołączenia” (lub unii, jeśli jest to zgodne) zamiast dwóch „wybierz”?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyraźne dołączenie do mySQL?

  2. Zaktualizuj dane do tabeli z dynamicznie tworzonego pola wejściowego

  3. Podziel Varchar na znak w MySQL

  4. Przechowywanie wiodących zer liczb całkowitych w bazie danych MySQL jako INTEGER

  5. Dynamiczny obrót MySQL