Partage
  • Partager sur Facebook
  • Partager sur Twitter

Copier table MySQL

requete

    8 septembre 2017 à 17:04:07

    Bonjour,

    Je cherche à copier une table SQL vers une autre table ( y compris les donnés ). Cette table doit être créé au moment de la copie et le nom de la table est donné à l'aide d'une variable.

    malgré l'exemple suivant : http://blogmotion.fr/programmation/php-sql/copie-table-mysql-5675 je n'arrive pas à réaliser la bonne syntaxe.

    Ce que j'ai tenté :

    $nom_table_charge_rfq = "charge_rfq_" + $nom_wbs ;
    			
    			$reponse = $link->exec("CREATE TABLE ".$nom_table_charge_rfq." LIKE charge_rfq ");
    			$reponse->closeCursor(); // fin de requete
    
    			$req =$link->prepare('INSERT INTO '.$nom_table_charge_rfq.' SELECT * FROM charge_rfq');
    			$req->execute();



    Pouvez vous m'aidez ?

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      8 septembre 2017 à 17:31:04

      Bonjour,

      Apparemment il n'y a rien de choquant dans le SQL ... à part le fait que tu dupliques des données :p

      N'as-tu pas une erreur PDO ? Les affiches-tu ? PDO::ERRMODE_EXCEPTION ...

      Peut-être donnes-tu un nom incorrect ...

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        8 septembre 2017 à 23:17:08

        Aux dernières nouvelles, l'opérateur de concaténation était encore . en PHP.

        Et la méthode PDO::exec renvoyait un entier ou FALSE mais certainement pas un objet PDOStatement = impossible d'appeler closeCursor là-dessus.

        Je n'arrive pas à croire que tu n'aies même pas une erreur PHP là !

        Pour finir, la dernière requête, inutile de la préparer, elle n'a aucun paramètre.

        • Partager sur Facebook
        • Partager sur Twitter
          19 septembre 2017 à 9:44:53

          Benzouye a écrit:

          Bonjour,

          Apparemment il n'y a rien de choquant dans le SQL ... à part le fait que tu dupliques des données :p

          N'as-tu pas une erreur PDO ? Les affiches-tu ? PDO::ERRMODE_EXCEPTION ...

          Peut-être donnes-tu un nom incorrect ...



          Le but est de les dupliquer. Et j'avais effectivement taper un nom incorrect.

          Est-il possible de nommer une table avec un nom contenant un "." ( du genre "voiture.a") ? Car il semblerait que ma requête SQL ne puisse le faire. 

          julp a écrit:

          Aux dernières nouvelles, l'opérateur de concaténation était encore . en PHP.

          Et la méthode PDO::exec renvoyait un entier ou FALSE mais certainement pas un objet PDOStatement = impossible d'appeler closeCursor là-dessus.

          Je n'arrive pas à croire que tu n'aies même pas une erreur PHP là !

          Pour finir, la dernière requête, inutile de la préparer, elle n'a aucun paramètre.

          Effectivement j'avais complètement oublié. Le closeCursor() est-il nécessaire dans ce cas présent?

          Merci



          • Partager sur Facebook
          • Partager sur Twitter
            19 septembre 2017 à 10:07:21

            DimitriNeker1 a écrit:

            Est-il possible de nommer une table avec un nom contenant un "." ( du genre "voiture.a")

            Je te déconseille d'utiliser le point dans les noms de table ou de colonne. Tu pourrais, en utilisant les quotes obliques :

            CREATE TABLE `voiture.ca` ...

            Mais ce n'est pas une bonne pratique, et pourrais régulièrement porter à confusion, puisque le point sert à séparer les noms dans les requête :

            SELECT mon_schema.ma_table.ma_colonne
            FROM mon_schema.ma_table;

            DimitriNeker1 a écrit:

            Le closeCursor() est-il nécessaire dans ce cas présent?

            Si tu ne réutilise pas de variable PDOStatement, le closeCursor() n'est pas vraiment nécessaire, mais c'est une bonne habitude à prendre que de le mettre systématiquement, en mode réflexe.

            http://php.net/manual/fr/pdostatement.closecursor.php

            -
            Edité par Benzouye 19 septembre 2017 à 10:08:40

            • Partager sur Facebook
            • Partager sur Twitter
            Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
              19 septembre 2017 à 11:41:26

              Benzouye a écrit:

              Si tu ne réutilise pas de variable PDOStatement, le closeCursor() n'est pas vraiment nécessaire, mais c'est une bonne habitude à prendre que de le mettre systématiquement, en mode réflexe.

              http://php.net/manual/fr/pdostatement.closecursor.php

              -
              Edité par Benzouye il y a environ 1 heure



              Justement lorsque je décide de l'utiliser quand même : 

              $req = $link->exec("CREATE TABLE ".$nom_table_charge_rfq." LIKE charges_rfq");
              			$req->closeCursor(); // fin de requete
              			$req =$link->exec('INSERT INTO '.$nom_table_charge_rfq.' SELECT * FROM charges_rfq');
              			$req->closeCursor(); // fin de requete

              J'ai l'erreur "Call to a member function closeCursor() on integer". Je ne $req étant un objet je ne comprend pas.

              • Partager sur Facebook
              • Partager sur Twitter
                19 septembre 2017 à 11:52:06

                DimitriNeker1 a écrit:

                J'ai l'erreur "Call to a member function closeCursor() on integer"

                julp a écrit:

                la méthode PDO::exec renvoie un entier ou FALSE mais certainement pas un objet PDOStatement = impossible d'appeler closeCursor là-dessus

                Il faut lire et comprendre avant de continuer ... :p

                $req n'est pas un objet PDOStatement ici ... pas besoin de closeCursor dans ce cas :p

                De nouveau : https://secure.php.net/manual/fr/pdostatement.closecursor.php

                Tu auras besoin de closeCursor() si tu utilises l'objet PDOStatement, qui est retourné par les méthodes PDO::prepare (pour les requêtes préparées) ou PDO::query (pour les requêtes directes) ...

                • Partager sur Facebook
                • Partager sur Twitter
                Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                  19 septembre 2017 à 11:59:10

                  Benzouye a écrit:

                  Il faut lire et comprendre avant de continuer ... :p

                  $req n'est pas un objet PDOStatement ici ... pas besoin de closeCursor dans ce cas :p

                  De nouveau : https://secure.php.net/manual/fr/pdostatement.closecursor.php

                  Tu auras besoin de closeCursor() si tu utilises l'objet PDOStatement, qui est retourné par les méthodes PDO::prepare (pour les requêtes préparées) ou PDO::query (pour les requêtes directes) ...


                  Ah nickel, merci beaucoup ! Je vais refaire un tour sur cette notion de PDOStatement.

                  -
                  Edité par DimitriNeker1 19 septembre 2017 à 11:59:48

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Copier table MySQL

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown