Partage
  • Partager sur Facebook
  • Partager sur Twitter

PDO - Erreur CREATE TABLE

Alors que si j'utilise mysql_query sa marche...

Sujet résolu
    11 septembre 2010 à 14:10:39

    Bonjour,

    Je suis face à une erreur étrange...

    J'ai un ancien script qui tournais à coup de mysql_query(), étant donné que j'envisage de le porté sous PostgreSQL j'ai donc remplacé tout mes mysql_query() en $sql->query() ou $sql->exec().
    Ce script marchais parfaitement bien lorsqu'il fonctionnais avec des mysql_query(), mais maintenant qu'il est sous PDO j'ai une erreur étrange.

    Voici la requête:
    <?php
    $query = 'CREATE TEMPORARY TABLE  `' . SQL_PREFIX . 'temp` (
    		`id_site` MEDIUMINT( 8 ) NOT NULL ,
    		`info1` VARCHAR( 255 ) NOT NULL ,
    		`info2` VARCHAR( 255 ) NOT NULL
    	) ENGINE = MYISAM';
    $sql->exec($query) or exit ( 'Erreur Sql dans le fichier ' . __FILE__ . ' à la ligne ' . __LINE__ . '<br />Error: ' . print_r( $sql->errorInfo() ) . '<br />Query: ' . $query );
    


    Voici ce que j'ai droit lorsque j’exécute cette requête:

    Citation

    Array ( [0] => 00000 [1] => [2] => ) Erreur Sql dans le fichier Z:\wamp\www\spider\spider 5\search.php à la ligne 113
    Error: 1
    Query: CREATE TEMPORARY TABLE `search_v3_temp` ( `id_site` MEDIUMINT( 8 ) NOT NULL , `info1` VARCHAR( 255 ) NOT NULL , `info2` VARCHAR( 255 ) NOT NULL ) ENGINE = MYISAM ;



    Evidemment lorsque je mes cette requête dans phpMyAdmin, elle fonctionne parfaitement...
    Ce qui me perturbe le plus c'est l'absence de message d'erreur.
    Bref, je suis perdu, pouvez-vous m'aider ?

    Merci de votre attention.
    Cordialement, La source.
    • Partager sur Facebook
    • Partager sur Twitter
      11 septembre 2010 à 14:32:09

      Normal. PDO::exec renvoie le nombre de lignes modifiées. Or toi, tu touches à la structure, donc il va te retourner 0, false ou ce genre de choses.
      Pour régler ce souci, tu as deux solutions :
      - utiliser les requêtes préparées
      - récupérer les erreurs par exception (<?php $sql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); juste après la connexion, et utiliser try/catch pour chacune de tes requêtes)
      • Partager sur Facebook
      • Partager sur Twitter
        12 septembre 2010 à 13:40:23

        D'accord...

        Merci pour ton aide ;)

        Je savais que j'aurai du continuer à utiliser ma class SQL plutôt que de faire les transformations à l'arrache :p
        • Partager sur Facebook
        • Partager sur Twitter

        PDO - Erreur CREATE TABLE

        × 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