2个表之间的事务处理PDO

时间:2019-02-07 12:39:25

标签: php mysql pdo

我想用php pdo在两个表之间进行事务,我使用7.0版的php。

$user = 'root';
$password = '0000';
try {
  /* Connexion à la base de données */
  $db = new PDO("mysql:host=localhost;dbname=php",$user,$password);
  /* Démarre une transaction, désactivation de l'auto-commit */
   $db->beginTransaction();
  // /* Modification du schéma de la base ainsi que des données */
  $db->query('
  SET @crediteur.nom = "'.$_POST['nom_destinataire'].'";
  SET @crediteur.prenom = "'.$_POST['prenom_destinataire'].'";
  SET @debiteur.nom = "'.$_POST['nom_emetteur'].'";
  SET @debiteur.prenom = "'.$_POST['prenom_emetteur'].'";
  SET @montant = "'.$_POST['virement'].'";
  SET @@AUTOCOMMIT = 0;

   /* Lancement du de la transaction */
  START TRANSACTION;

  INSERT INTO clients
  SET nom = @crediteur.nom,
  prenom = @crediteur.prenom,
  email = CONCAT(@crediteur.prenom,'.',@crediteur.nom,"@gmail.com");

  SELECT LAST_INSERT_ID() INTO @id_crediteur;

  SELECT clients.id
  FROM clients
  WHERE clients.nom = @debiteur.nom AND clients.prenom = @debiteur.prenom
  INTO @id_debiteur;

  UPDATE comptes SET solde = solde - @montant WHERE comptes.clients = @id_debiteur;
  UPDATE comptes SET solde = solde + @montant WHERE comptes.clients = @id_crediteur;
  ');
  // /*var_dump($_POST['nom_destinataire']);*/
  $db->commit();
}
catch( Exception $e ) {
  //on affiche un message d'erreur ainsi que les erreurs
  echo 'Erreur <br />';
  echo 'Erreur : '.$e->getMessage().'<br />';
  echo 'N° : '.$e->getCode();
  $dbh->rollBack();
}

没有错误消息,但也没有数据库更改。 我不能来,你能帮我吗?

0 个答案:

没有答案