[RESOLU] Copie Table si inexistant

Eléphant du PHP | 100 Messages

20 déc. 2025, 16:06

Bonjour Tout le Monde,

Je cherche à copier plusieurs tables structures identiques mais nom différents
Je boucle sur mon fichier contenant l'information $ligne['numerocopropriete']
et je crée mes copies

un table pour xxxcomptabilite et une table pour xxxcoproprietaires pour chaque copropriété

Code : Tout sélectionner

$requete = $bdd->prepare('SELECT * FROM '.$copropriete_BDD.' ORDER BY id ASC'); $requete->execute(); while ($ligne = $requete->fetch()) { // echo "/".$ligne['numerocopropriete']."/</br>"; $table_bdd01 = $ligne['numerocopropriete'].'comptabilite'; // $requete = $bdd->prepare('SHOW TABLES LIKE "'.$table_bdd01); $requetetable01 = $bdd->prepare('SHOW TABLES LIKE ".$table_bdd01"'); $requetetable01->execute(); $nb_enreg = $requetetable01->rowCount(); if($nb_enreg >0){ echo 'Cette table existe déjà : '.$ligne['numerocopropriete'].'comptabilite</br>'; } if($nb_enreg ==0){ // echo "Pas OK"; echo'La Table n\'existe pas : '.$ligne['numerocopropriete'].'comptabilite</br>'; $table = 'comptabilite'; //Le nom de la nouvelle table. $newTable = $ligne['numerocopropriete'].'comptabilite'; //Copier la structure de la table $reponse01 = $bdd->query("CREATE TABLE $newTable LIKE $table"); $reponse01->execute(); } $reponse01->closeCursor(); $requetetable01->closeCursor(); // ------------------- $table_bdd02 = $ligne['numerocopropriete'].'coproprietaires'; $requetetable02 = $bdd->prepare('SHOW TABLES LIKE "$table_bdd02"'); $requetetable02->execute(); $nb_enreg = $requetetable02->rowCount(); if($nb_enreg ==0){ echo'La Table n\'existe pas : '.$ligne['numerocopropriete'].'coproprietaires</br>'; $table = 'coproprietaires'; //Le nom de la nouvelle table. $newTable = $ligne['numerocopropriete'].'coproprietaires'; //Copier la structure de la table $reponse02 = $bdd->query("CREATE TABLE $newTable LIKE $table"); $reponse02->execute(); $reponse02->closeCursor(); } else{ echo 'Cette table existe déjà : '.$ligne['numerocopropriete'].'comptabilite</br>'; } $reponse02->closeCursor(); $requetetable02->closeCursor(); }
j'ai l'erreur suivante
La Table n'existe pas : c0001comptabilite alors qu'elle vient d'être crée (après vérification)

( ! ) Fatal error: Uncaught PDOException: SQLSTATE[42S01]: Base table or view already exists: 1050 La table 'c0001comptabilite' existe déjà:

Je suis sur ce problème depuis un long moment (plusieurs jours) sans trouver mon erreur est-ce que while fait la boucle trop vite par rapport à la création de la table ?
Si je boucle sans la création des Tables, j'affiche les tables déjà créés et les tables qui n'existent pas sans erreur
Cette table existe déjà : c0001comptabilite
Cette table existe déjà : c0001coproprietaires
Cette table existe déjà : c0002comptabilite
La Table n'existe pas : c0002coproprietaires
La Table n'existe pas : c0003comptabilite
La Table n'existe pas : c0003coproprietaires
La Table n'existe pas : c0004jb12comptabilite
La Table n'existe pas : c0004jb12coproprietaires
La Table n'existe pas : c0004jb14comptabilite
La Table n'existe pas : c0004jb14coproprietaires
Merci

Eléphant du PHP | 100 Messages

21 déc. 2025, 15:47

Je me réponds à moi-même

Sujet résolu
Merci :D