Bonsoir tout le monde ,

j'aimerais depuis un formulaire de recuperer et d'inserer des champs dans 3 tables avec la recuperation de lastInsert Id du premier tables .
voila un peu pres ce que je veux faire

V$dbh->beginTransaction();
try {
    // this query inserts data into the `users` table
    $stmt = $dbh->prepare('
                        INSERT INTO `users`
                        (users_status, user_login, user_pass, user_email, user_registered)
                        VALUES
                        (?, ?, ?, ?, NOW())');
    $stmt->bindParam(1, $userstatus, PDO::PARAM_STR);
    $stmt->bindParam(2, $username, PDO::PARAM_STR);
    $stmt->bindParam(3, $HashedPassword, PDO::PARAM_STR);
    $stmt->bindParam(4, $email, PDO::PARAM_STR);
    $stmt->execute();
    // get user_uid from insert for use in other tables below
    $lastInsertID = $dbh->lastInsertId();
    // this query inserts data into the `users_status` table
    $stmt = $dbh->prepare('
                        INSERT INTO `users_status`
                        (user_uid, user_activation_key)
                        VALUES
                        (?, ?)');
    $stmt->bindParam(1, $lastInsertID, PDO::PARAM_STR);
    $stmt->bindParam(2, $activationkey, PDO::PARAM_STR);
    $stmt->execute();
    // this query inserts data into the `users_roles` table
    $stmt = $dbh->prepare('
                        INSERT INTO `users_roles`
                        (user_uid, user_role)
                        VALUES
                        (?, ?)');
    $stmt->bindParam(1, $lastInsertID, PDO::PARAM_STR);
    $stmt->bindParam(2, SUBSCRIBER_ROLE, PDO::PARAM_STR);
    $stmt->execute();
    // this query inserts data into the `users_profiles` table
    $stmt = $dbh->prepare('
                        INSERT INTO `users_profiles`
                        (user_uid)
                        VALUES
                        (?)');
    $stmt->bindParam(1, $lastInsertID, PDO::PARAM_STR);
    $stmt->execute();
    // commit transaction
    $dbh->commit();
} // any errors from the above database queries will be catched
catch (PDOException $e) {
    // roll back transaction
    $dbh->rollback();
    // log any errors to file
    ExceptionErrorHandler($e);
    require_once($footer_inc);
    exit;
}

3 réponses


Et donc c'est quoi ta question ?

c'est d'inserer dans 3 tables on recuperons le LAST INSERT ID des la premiere insertion !

Ben je viens de vérifier du coup parce que j'avais un doute, mais ton code devrait fonctionner.
IL te retourne une erreur ?