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 :

[Access] Gérer les apostrophes [ODBC]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de kernigansnotdead
    Homme Profil pro
    Traducteur technique anglais > français indépendant
    Inscrit en
    Septembre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Traducteur technique anglais > français indépendant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 77
    Points : 73
    Points
    73
    Par défaut [Access] Gérer les apostrophes
    Bonjour,

    voila, je vous explique le problème depuis le début :

    j'utilise PHP 4.2.0 avec MS Access 2003, et lorsque que je tente un INSERT avec une valeur qui contient un apostrophe, j'obtient bien sur le message suivant
    [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (operateur absent) dans l'expression ''Dick's Computer Dienst')'.
    Donc forcément, j'essaye de trouver un moyen d'enlever l'apostrophe qui est à l'origine de tout cela...

    et voici le code qui génère la variable que je tente d'insérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(preg_match('/<h1 style="margin-left:20px;margin-top:5px;">(.*)<\/h1>/', $lines[$i], $matches))		
    {$db_company_name=trim($matches[1],"\'");
    }
    et ensuite la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #connecting to database
    				$database = new TAccessDB;
    				$connection_id = $database->connect(DB_ODBC_NAME, DB_ODBC_USERNAME, DB_ODBC_PASSWORD);
    				#inserting data database
    				$query = "insert into T_COMPANIES_SAMPLE (Company) values('$db_company_name')";
    				$inserting_companies = $database->exec($connection_id, $query) or die ('<div style=color:red>can\'t insert '.odbc_errormsg().' <div><br>');
    jusque la ça devrait fonctionner, mais ça fonctionne pas...
    quelqu'un a une idée?

    Merci pour votre aide,
    knd

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Pour insérer une apostrophe en SQL, il faut la doubler...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre régulier Avatar de kernigansnotdead
    Homme Profil pro
    Traducteur technique anglais > français indépendant
    Inscrit en
    Septembre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Traducteur technique anglais > français indépendant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 77
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    et merci pour ta réponse. En fait, je ne vois pas ce que tu veux dire par 'la doubler'. en mettre deux? Ma réponse paraît idiote, mais sincèrement je vois pas

    knd

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Citation Envoyé par kernigansnotdead
    En fait, je ne vois pas ce que tu veux dire par 'la doubler'. en mettre deux?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO matable(colonne)
    VALUES ('c''est ça')
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre régulier Avatar de kernigansnotdead
    Homme Profil pro
    Traducteur technique anglais > français indépendant
    Inscrit en
    Septembre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Traducteur technique anglais > français indépendant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 77
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    quand je rajoute un apostrophe pour une seule chaine de caractère en dur, ça fonctionne bien, mais je vois pas comment automatiser le processus avec une variable. Je ne vois pas de fonctions qui rajoute systématiquement un apostrophe derrière chaque apostrophe.
    J'ai essayé addslashes() et j'obtient la même erreur. Dois-je passer par différentes string functions?

    knd

  6. #6
    Membre régulier Avatar de kernigansnotdead
    Homme Profil pro
    Traducteur technique anglais > français indépendant
    Inscrit en
    Septembre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Traducteur technique anglais > français indépendant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 77
    Points : 73
    Points
    73
    Par défaut
    en fait, je viens de régler le problème en utilisant ereg_replace()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db_company_name=ereg_replace("'","''",$matches[1]);
    c'était pas plus compliqué que ça, bon en tout cas merci pour ton aide.

    knd

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

Discussions similaires

  1. Gérer les apostrophes dans un input
    Par Freedolphin dans le forum Langage
    Réponses: 0
    Dernier message: 05/03/2013, 16h59
  2. gérer les ' (apostrophes)
    Par lesarbres dans le forum Langage
    Réponses: 2
    Dernier message: 31/03/2008, 23h50
  3. Comment gérer les apostrophes dans oracle
    Par jenyfer dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/11/2006, 14h23
  4. [VBA-A] Gérer les apostrophes dans le champ d'un formulaire
    Par cuicui08 dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/02/2006, 17h23
  5. Comment gérer les codes postaux sous access?
    Par Jac_S_69 dans le forum Access
    Réponses: 3
    Dernier message: 01/12/2005, 21h38

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