Bonjour,
Je souhaiterais insérer une valeur de type VARCHAR directement dans phpmyadmin.
Le problème est qu'une des valeur à un apostrophe.
A l'affichage, l'apostrophe bug.
Donc comment inserer correctement un apostrophe dans phpmyadmin ?
Merci
Bonjour,
Je souhaiterais insérer une valeur de type VARCHAR directement dans phpmyadmin.
Le problème est qu'une des valeur à un apostrophe.
A l'affichage, l'apostrophe bug.
Donc comment inserer correctement un apostrophe dans phpmyadmin ?
Merci
Que ce soit dans MySQL ou dans un autre SGBD, d'une manière générale, donc, en SQL, l'apostrophe est le caractère qui encadre les chaînes de caractères. Pour insérer une apostrophe, il faut alors la doubler.
Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO la_table(la_colonne) VALUES('Aujourd''hui')
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
J'ai fais ceci :
Mais cela ne change toujours rien, ça bug à l'affichage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part UPDATE `taxonomyCat` SET `add_taxonomyCat`='behavioral''s verb' WHERE `id_taxonomyCat`=17
Salut fredo8.
Il faut mettre ta chaîne de caractères entre guillemet comme ci-après :
@+
Code : Sélectionner tout - Visualiser dans une fenêtre à part UPDATE taxonomyCat SET add_taxonomyCat = "behavioral's verb" WHERE id_taxonomyCat= 17;
Ceci n'est pas un message d'erreur !Ca ne marche pas.
Symptômes ?
- La modification n'est pas effectuée ?
- La requête ne s'exécute pas ?
- Le SGBD renvoie un message d'erreur ?
- L'ordinateur a explosé ?
La syntaxe de votre requête est tout à fait correcte. Cela se devine d'ailleurs avec la coloration syntaxique qui l'interprète correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part UPDATE `taxonomyCat` SET `add_taxonomyCat`='behavioral''s verb' WHERE `id_taxonomyCat`=17C'est quoi cette histoire de fonction ? Qu'utilisez-vous pour faire exécuter la requête par MySQL ?Par contre, lors de l'ajout ou modification, j'ai un champ "fonction" avec une liste déroulante, il y aurait pas une fonction à sélectionner par hasard ?
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Le PC fume un peu
La valeur en elle même se met dans la colonne.
Mais pour l'afficher sur le site, voilà l'erreur :
La liste de fonctions que je parle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's verb'' at line 1
Et où je fais les requête SQL :
![]()
Par le php, j'utilise addslashes mais j'entre les valeurs directement dans PhpMyAdmin.
Si tu copies-colles ta requête dans cette partie et que tu l'exécutes, tu ne devrais pas avoir d'erreur et la valeur sera mise à jour.Et où je fais les requête SQL :
Euh...Par le php, j'utilise addslashes mais j'entre les valeurs directement dans PhpMyAdmin.
Dans une de mes tables de test, j'ai inséré la valeur "aujourd'hui" dans une colonne texte directement en tapant aujourd'hui (sans rien autour) dans la zone d'insertion et ça a marché. phpMyAdmin a soumis à MySQL la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part INSERT INTO `test`.`objet` (`id_objet`, `nom_objet`, `id_groupe`) VALUES ('0', 'aujourd''hui', '1');Pour afficher, on ne fait pas une requête UPDATE mais une requête SELECT !Mais pour l'afficher sur le site, voilà l'erreur :
Veux-tu dire que tu essaies de soumettre la requête UPDATE via un programme PHP que tu as écrit ?
Si oui, donne-nous le bout de programme.
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Je suis en train de me rendre compte que l'erreur ne vient pas de "comment on entre la valeur" mais plutôt pour l'afficher.
J'ai résolue une erreur pour l'affichage, je récupérais le champ pour le réutilisé dans une autre requetes, j'ai donc mis "addslashes" et affiche correct.
Par contre à un autre endroit, pour l'affichage dans une balise HTML, j'ai remplacé ' par \" (\' ne marchait pas) ( et les ' du HTML).
Merci de m'avoir éclairer.
Salut fredo8.
Je ne comprends pas trop vos explications sur "ça ne marche pas".
En mysql pur, mettre une chaîne de caractères en guillemet avec une apostrophe à l'intérieur, fonctionne très bien comme je l'ai fait.
On peut aussi utiliser la double apostrophe, comme l'indique CinPhil, mais cela ne fonctionne pas en mysql pur.
Si vous travaillez, en php vous devez utiliser l'escape pour que l'apostrophe ne soit pas interpréter comme une fin de chaîne.
Exemple : behavioral[color=red]\'[color]s verb
Pourquoi mettre un espace devant certains caractères ?
Exemple : UPDATE `taxonomyCat` SET `add_taxonomyCat`='behavioral'[color=red]s verb[color]' WHERE `id_taxonomyCat`=17
ce que j'ai mis en rouge provequera une erreur de syntaxe car l'apostrophe final de behavioral sera interprété comme une fin de chaîne.
Ce n'est pas un problème d'affichage que vous avez mais un problème d'interprétation.Envoyé par fredo8
Saisissez avec phpmyadmin, la valeur behavioral\'s avec un anti-slash qui est la caractère escape et normalement cela devrait fonctionner.
@+
Bien sûr que si !On peut aussi utiliser la double apostrophe, comme l'indique CinPhil, mais cela ne fonctionne pas en mysql pur.
Tu veux t'inscrire à ce cours ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 MariaDB [test]> INSERT INTO te_cours_crs(crs_titre, crs_date) -> VALUES ('L''informatique pour les nuls', '2015-06-05'); Query OK, 1 row affected (0.02 sec) MariaDB [test]> SELECT crs_titre -> FROM te_cours_crs -> WHERE crs_date = '2015-06-05'; +------------------------------+ | crs_titre | +------------------------------+ | L'informatique pour les nuls | +------------------------------+ 1 row in set (0.00 sec)![]()
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Salut CinePhil.
Je te parle de MySql pur, au travers de l'application mysql en batch sous windows, et tu me réponds Php.
Je ne voie pas trop la relation.
@+
Encore raté !tu me réponds Php.
Ce que je t'ai montré, justement, c'est l'utilisation de MySQL (MariaDb mais c'est pareil) en ligne de commande dans une console Linux. Difficile de faire plus "pur" !
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Salut CinePhil.
J'adore ta façon de t'exprimer.
On te parle de MySql, tu nous parles de MariaDB.
On te parle de Windows, tu nous parles de Linux.
On te parle d'un batch MySql sous windows et tu nous parles de Php.
Moi, j'appelle cela faire un hors sujet et cela ne répond pas à l'attente de Fredo8.
A la question de Fredo8, il faut utiliser le caractères escape noté anti-slash devant l'apostrophe (\') quand il saisie une chaîne de caractères avec phpmyadmin.
Afin de ne pas interpréter cet apostrophe comme la marque de la fin d'une chaîne de caractères.
@+
L'utilisation de l'apostrophe doublée, c'est du standard SQL qu'applique très bien MySQL, qu'il soit sous Linux ou sous Windows, dans une requête écrite en accès en ligne de commande ou dans la zone de saisie des requêtes de phpMyAdmin.
Je viens (encore) de tester dans mon phpMyAdmin (certes, sous Linux, mais ça n'a aucune importance), cette requête :Envoyé par Fredo8
Réponse de phpMyAdmin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part INSERT INTO t_groupe (grp_name, grp_cls_id) VALUES ('L''école des nuls', 1)
Un petit SELECT pour vérifier :1 ligne insérée.
Identifiant de la ligne insérée : 3 (Traitement en 0.0794 secondes.)
Réponse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM `t_groupe` WHERE grp_name = 'L''école des nuls'
grp_id, grp_name, grp_cls_id
3, L'école des nuls, 1
Tu veux t'inscrire à ce groupe ?
À part, ça, Fredo8 a semble t-il résolu son souci d'affichage qui concernait apparemment un programme PHP et donc hors sujet effectivement ici.
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Partager