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

Shell et commandes GNU Discussion :

Script bash "ERROR SQL syntax"


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 74
    Par défaut Script bash "ERROR SQL syntax"
    Bonjour à tous,
    je fais un petit script bash qui utilise exiv2 et inclus les résultats dans ma base mariaDB, j'ai lors de l’envoie avec UPDATE, j'ai un beau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ocre -' at line 1
    Le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mysqlCN="mysql --column-names=0 -D$sqlDb -u$sqlUser -p$sqlPwd"
     
    sqlQueryInclude="UPDATE \`phototeste\`.\`images\` SET \`name\` = '$resultIptcName', \`comment\` = '$resultIptcComm', \`author\` = '$resultIptcAuth' WHERE \`images\`.\`id\` = $sqlResultId;"
    sqlResultInclude=`echo $sqlQueryInclude | $mysqlCN`
    La variable "$resultIptcComm", peut contenir toute sorte de caractères spéciaux et c'est ce qui semble poser problème. Je pensais qu'avec '' cela passerait impec, mais non. Une idée ?

    Merci de votre aide,
    et bonne soirée

    EDIT :

    Après re vérification des résultats de mes variables, les caractères spéciaux sont affiché sous forme � une fois extrait de exiv2 par mon script. Si j'utilise exiv2 en ligne de commande c'est bon, mais dans mon script Bash ne doit pas utiliser l'utf8. Une idée ?

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ocre -'
    donc la oui très clairement c'est la syntaxe qui part en cacahuete...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE \`phototeste\`.\`images\` SET \`name\` = '$resultIptcName', \`comment\` = '$resultIptcComm', \`author\` = '$resultIptcAuth' WHERE \`images\`.\`id\` = $sqlResultId;"
    déjà tes cotes c'est des contre-quotes c'est donc pas bon.
    et si tu quotes des variables elles sont pas interprétées en prime

    donc ça ressemblerai plus à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "update phototeste.images set name=$resultptcname,comment=$resultlptccomm,author=$resultlptcauth where images.id=$sqlresultld"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 74
    Par défaut
    C'est effectivement plus propre.

    Mais ça ne résous pas le problème des �

    PS : les contre-quotes, sont échappé pour l’exécution sql mais pas bash, les variables sont dans des simple-quotes non échappé. Ça marche aussi, mais c'est moins propre, encore merci pour ta façon de faire.

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    tu es bien en utf8 partout ? y compris en base ? partout partout sur la machine ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 74
    Par défaut
    je confirme !

    mon seul doute sur l'utf8 c'est l’éditeur ... Je voulais faire ça vite, j'utilise nano. il a un encodage par défaut qui diffère de l'utf8 ?

    EDIT :
    Le fichier est bien en UTF8

    EDIT 2 :
    L'une des IPTC n’était pas en utf8, mais en iso-8859-1
    Réglé avec "| iconv -f iso-8859-1 -t utf-8".

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

Discussions similaires

  1. Syntaxe script Bash
    Par kromartien dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 11/03/2007, 16h44
  2. [dump SQL] syntax error near 'ENGINE=MyISAM
    Par pierrot10 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/09/2006, 12h33
  3. You have an error in your SQL syntax; check the manual ..
    Par Spaccio dans le forum Requêtes
    Réponses: 5
    Dernier message: 09/07/2006, 17h39
  4. [SQL] magic quotes ou double apostrophes pour échapper apostrophe
    Par zorian dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 13/03/2006, 16h23
  5. Scripts bash : requêtes sql
    Par milka dans le forum Linux
    Réponses: 3
    Dernier message: 17/08/2005, 10h59

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