IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

La méthode select de la classe MYPDO de rawsrc retourne soit un tableau vide soit NULL [POO]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut La méthode select de la classe MYPDO de rawsrc retourne soit un tableau vide soit NULL
    Bonjour,
    j'utilise la méthode select de la classe MYPDO de rawsrc. Celle-ci, si elle réussit, retourne un tableau rempli de valeurs (issues d'un fetchAll) et NULL si elle échoue. Je teste donc la valeur de retour pour savoir si ça s'est bien passé ou non.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
    public function createBdd($val,$type_CSV)
    {
        $bdd=new MYPDO();
        foreach($val as $val_bdd)
        {
                 $deb_req="INSERT INTO `".$type_CSV."` ";
                 $list_colons='(id_SESA,alternate_id,platform,platform_owner,publisher,application_name,HFMCODE,Currently_active,Activate_date,Deactivate_date,Group_name,Office_Country,Firstname,Lastname,Company_name,Job_code,Reporting_entity,Business_unit_name,Location,Internet_Address,Manager_firstname,Manager_lastname,Manager_email)';
                 $list_values=" VALUES('".$val_bdd."')";
     
                 $sql=$deb_req.$list_colons.$list_values;
     
                 $ret=$bdd->select( $sql, [] );
     
                 var_dump($ret);
        }
        return $ret;
    }
    ///////////////////////
     $CSV_in_bdd=new CSVInBDD();
                    $ret=$CSV_in_bdd->createBdd($val['content'],$val['type_csv']);
     
                    if ($ret)
                    {
                        $body = new PhpEcho('', ['msg_end' => $_FILES['file2']['name']." fully processed, without errors."]);
                        $body->setCode('<p>'.$body('msg_end').'</p>');
                        echo $body;
                    }
                    else{
                        $body = new PhpEcho('', ['msg_error' => $_FILES['file2']['name']." has not been put in BDD."]);
                        $body->setCode('<p>'.$body('msg_error').'</p>');
                        echo $body;
                    }
    Je constate que l'exécution de la requête SQL (effectuée par cette méthode) s'est bien déroulée mais néanmoins les 36 var_dump de la ligne 16 (la méthode est appelée 36 fois) affichent soit un tableau vide, soit NULL. Pourquoi ? Merci.

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    salut Laurent,

    euh... tu bois ou quoi ?
    je te mets juste ce qui ne va pas en remplaçant les valeurs de tes variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ret = $bdd->select("INSERT INTO ...", []);
    Faut dessaouler là parce que les dents du fond baignent !

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Désolé, mais même parfaitement clean, je ne vois pas ce que tu as changé dans mon code, donc ce qui n'allait pas...

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Je vais te l'écrire en plus gros :
    tu fais un select() avec une chaîne sql : INSERT

    Opte pour l'eau gazeuse mon gars

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    OK, du coup, j'ai rajouté une méthode dans ta classe :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public function insert($sql, array $values, array $type = []):bool
        {
            try {
                $stmt = self::$pdo->prepare($sql);
                foreach ($values as $tag => $v) {
                    $stmt->bindValue($tag, $v, $type[$tag] ?? \PDO::PARAM_STR);
                }
                $exec = $stmt->execute();
                //var_dump($stmt);
                return true;
            } catch (\PDOException $e) {
                error_log('PDO::select - '.$e->getmessage());
                return false;
            }
        }
    à laquelle je passe ma requête INSERT. Correct ?

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    salut,

    oui c'est correct, par contre tu pourrais améliorer dans la mesure où les INSERT sont standard dans leur syntaxe. Tu pourrais générer tout seul la chaîne sql qui va bien en y ajoutant les tableaux de valeurs (multi insertions en une seule fois : la syntaxe VALUES (val1a, val1b), (val2a, val2b), ...
    J'ai ça en stock mais je te laisse phosphorer un peu surtout au réveil quand t'es sobre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] La méthode select de la classe worksheet a échoué
    Par nanousik dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/07/2013, 12h17
  2. Méthode select de la classe range a échoué
    Par BERRACHED SAID dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 06/06/2013, 14h11
  3. Réponses: 4
    Dernier message: 26/08/2010, 14h40
  4. erreur méthode select de la classe range
    Par chloe2 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/11/2009, 11h23
  5. Méthode Select de la classe worksheet a échoué
    Par marinef dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 22/07/2009, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo