我想用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();
}
没有错误消息,但也没有数据库更改。 我不能来,你能帮我吗?