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

SGBD Perl Discussion :

Insérer une donnée contenant une apostrophe


Sujet :

SGBD Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 68
    Points : 46
    Points
    46
    Par défaut Insérer une donnée contenant une apostrophe
    Bonjour

    J'ai un programme qui met à jour un carnet d'adresse ou bien le complète si l'entrée est nouvelle.
    Tout fonctionne bien jusqu'à ce que je rencontre des données contenant une apostrophe.
    J'obtiens l'erreur suivante: Can't call method "each" on an undefined value at draft.pl line 50.

    En me documentant sur le net, le problème provient de l'apostrophe, la solution préconisée est de la remplacer par un \'

    J'ai donc ajouté la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $Nomvoie=~s/\'/\\'/;
    L'erreur disparait mais par contre ma table n'est plus mise à jour ni complétée: c'est un mystère pour moi d'autant que je débute dans l'apprentissage des bases de données.

    Merci à vous tous pour votre aide.






    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
     
    my $Nomvoie="Boulevard de l'Est";
    my $IsPresent=0;
     
    $mysql->query(qq{SELECT * FROM carnet WHERE voie LIKE '$Nomvoie%'});
    my $record_set = $mysql->create_record_iterator;
    while (my $record = $record_set->each) {
    if ($record->[1] eq $Nomvoie)
    { 	$IsPresent=1;
    	$mysql->query(qq{
    		UPDATE carnet SET Numero='$numero'
    		WHERE voie='$Nomvoie'
    			});
    }
    }
    if ($IsPresent eq 0)
    {
    	$mysql->query(qq{
          INSERT INTO carnet (id, Name, Numero, voie)
    	  VALUES (DEFAULT,'$name','$numero','$Nomvoie')
    			});	
     
    }
     
    $mysql->close;

  2. #2
    Invité
    Invité(e)
    Par défaut
    Utilise DBI et la fonction quote pour ta variable $Nomvoie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Nomvoie = $dbh->quote($Nomvoie);

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 68
    Points : 46
    Points
    46
    Par défaut
    Je programme sous windows, j'aurais aimé utiliser DBI mais il n' a pas de package dbi::mysql, je suis un peu coincé au niveau de mes choix

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    DBD::mysql est disponible sous Windows (déjà compilé dans un ppm). Quel est le réel problème ? Que tu n'as pas le droit de l'installer ou que tu n'y arrives pas ?

    --
    Jedaï

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 68
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Jedai Voir le message
    DBD::mysql est disponible sous Windows (déjà compilé dans un ppm). Quel est le réel problème ? Que tu n'as pas le droit de l'installer ou que tu n'y arrives pas ?

    --
    Jedaï
    Bonsoir Jedaï, effectivement tu as raison, je viens d'installer DBD::mysqlPP et je viens de faire tourner mon code et ça marche bien, je suis soulagé.
    Je crois que je vais laisser tomber le module net::MySQL

    Merci aussi à kuzco, j'ai appliqué la fonction quote et ça tourne bien!

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par piotr Voir le message
    Bonsoir Jedaï, effectivement tu as raison, je viens d'installer DBD::mysqlPP et je viens de faire tourner mon code et ça marche bien, je suis soulagé.
    Je crois que je vais laisser tomber le module net::MySQL
    Attention, DBD::mysqlPP est Pur Perl et donc relativement lent. DBD::mysql est le module à utiliser si possible, normalement il est disponible en ppm (peut-être pas sur le repository d'ActiveState). Enfin si tu n'as pas besoin de performances exceptionelles mysqlPP suffira bien. En tout cas, DBI est le standard, et nettement plus solide (et généralement complet) que les autres solutions.

    --
    Jedaï

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. [Toutes versions] Insérer le contenu d'une cellule dans une autre contenant déjà du texte.
    Par hentone dans le forum Excel
    Réponses: 1
    Dernier message: 03/07/2010, 05h20
  3. [MySQL] Insérer des données d'une table dans une autre
    Par bailamos dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 01/01/2009, 12h12
  4. [VBA Excel] Appliquer une macro sur une celulle contenant une valeur
    Par tchauviere dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/01/2008, 10h21
  5. Réponses: 2
    Dernier message: 18/12/2006, 19h04

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