sql >> Database >  >> RDS >> Mysql

Hoe kan ik voorbereide afschriften gebruiken in combinatie met Transacties met PHP?

Bel gewoon "uitvoeren" nadat u "beginTransaction" hebt gebeld.

Waar je 'voorbereiden' noemt, maakt niet echt uit.

Hier is een compleet voorbeeld:

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

VOORBEELD:

 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) Ik neem natuurlijk aan dat $user_input en $user_input_2 onmiddellijk beschikbaar zijn. Je wilt niet dat je transactie onnodig lang open blijft staan ​​;)

2) Op basis van je reactie hierboven, denk ik dat je "uitvoeren" en "begin tran/commit" door elkaar haalt. Kijk alsjeblieft op mijn link.

3) Heb je zelfs nodig een transactie? Je doet gewoon twee "select's".

4) Tot slot, waarom zou u niet één "join" (of vakbond, indien compatibel) doen in plaats van twee "select's"?



  1. Versleuteling binnen orakel

  2. Code eerste migraties en opgeslagen procedures

  3. `initialiseren':het schema postgres accepteert geen registerdeel:postgres:@ (of slechte hostnaam?) (URI::InvalidURIError) met Docker

  4. MySQL:GROUP_CONCAT met LEFT JOIN