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

PHP & Base de données Discussion :

Insérer dans bdd


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2021
    Messages : 5
    Par défaut Insérer dans bdd
    Bonjour à tous,

    Après scrapper des données je souhaite les insérer dans ma bdd. Du coup je récupère tout une ligne de donné qui contient mes 9 champs de ma table. Lors que j'exécute le code j'ai une erreur :
    Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe prs de ''.Array.''
    Voici mon code

    Code : 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
    35
    36
    function table_but_exact($lien_exact)
            {
     
                foreach ($lien_exact as $lien2) {
                    $html = new simple_html_dom();
                    $html->load_file($lien2);
                    $csv = [];
                    $tr = $html->find('#btable', 0);
                    foreach ($tr->find('tr') as $item) {
                        $td = $item->find("td");
                        $temp = [];
                        for ($i = 0; $i < sizeof($td); $i++) {
                            if ($i <> 2) {
                                $text = $td[$i]->text();
                                $text = trim($text);
                                $text = str_replace(",", "", $text);
                                $text = str_replace("%", "", $text);
                                $text = str_replace("&nbsp;", "", $text);
                                $text = str_replace('(', "", $text);
                                $text = str_replace(')', "", $text);
     
                                array_push($temp, $text);
                            }
                        }
                        if (sizeof($td) > 8) {
                            $csv[] = $temp;
                        }
                    }
                    $pdo = new PDO('mysql:host=localhost;dbname=resultat_stats', 'root', '');
                    foreach ($csv as $data) {
                        $ajouter = "INSERT INTO but_exact VALUE '.$data.'";
                        $preparedajouter = $pdo->prepare($ajouter);
                        $preparedajouter->execute();
                    }
                }
            }
    Je ne sais pas si j'en suis loin. Si vous pouvez m'aider j'en serai ravi.

    Merci d'avance, bonne soirée.

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $pdo = new PDO('mysql:host=localhost;dbname=resultat_stats', 'root', '');
    foreach ($csv as $data) {
        $ajouter = "INSERT INTO but_exact VALUE '.$data.'";
        $preparedajouter = $pdo->prepare($ajouter);
        $preparedajouter->execute();
    }
    Ce n'est pas de cette manière qu'on compose une requête, en concaténant les données à insérer directement dans la requête comme tu le fais. Il y a un tutoriel sur le site qui explique comment faire des requêtes préparées. Le manuel PHP est aussi d'un grand secours.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2021
    Messages : 5
    Par défaut
    Bonjour et merci de ta réponse,

    Du coup ça fait trois jours que je regarde et essaie mais sans résultat !!

    c'est bien un code dans ce genre qu'il faut : (vue dans la doc)

    Code : 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
    $query = 'INSERT INTO foo (nom, prix) VALUES (?, ?);';
    $prep = $pdo->prepare($query);
     
    $prep->bindValue(1, 'item 1', PDO::PARAM_STR);
    $prep->bindValue(2, 12.99, PDO::PARAM_FLOAT);
    $prep->execute();
     
    $prep->bindValue(1, 'item 2', PDO::PARAM_STR);
    $prep->bindValue(2, 7.99, PDO::PARAM_FLOAT);
    $prep->execute();
     
    $prep->bindValue(1, 'item 3', PDO::PARAM_STR);
    $prep->bindValue(2, 17.94, PDO::PARAM_FLOAT);
    $prep->execute();
     
    $prep = NULL;

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Alors oui c'est l'idée. Mais tu as un autre problème avec ton code, c'est que ta variable $data n'est pas une chaîne de caractères mais un tableau de chaîne de caractères, donc j'imagine que ton intention est de boucler sur ces chaînes pour les insérer dans ta base.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2021
    Messages : 5
    Par défaut
    Quand je fais var_dump($csv[0]); ça m'affiche un array avec la première ligne à insérer. et si je fais un var_dump($csv[0][0]); j'ai un string avec le premier champs à insérer.

    Mais j'arrive pas voir comment concaténant les données à insérer.

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    la 1re étape est de définir quelle requête vous voulez obtenir..
    ensuite vous pourrez construire cette requête à l'aide de ce qui est expliqué ici :
    https://www.php.net/manual/fr/language.types.array.php

Discussions similaires

  1. [WD16] Inserer dans une BDD les enregistrements d'une table
    Par elgeek dans le forum WinDev
    Réponses: 4
    Dernier message: 29/03/2011, 16h43
  2. [MySQL] Inserer qté dans bdd
    Par Shivas dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/06/2010, 12h27
  3. inserer page html dans bdd
    Par Magik22 dans le forum Bases de données
    Réponses: 2
    Dernier message: 10/07/2009, 19h48
  4. [MySQL] la fonction PHP qui permet de recuperer la dernière ligne inserée dans bdd
    Par otari dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/06/2007, 19h05

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