Version complète: sur le forum Webmaster Hub : Probleme mysql [RESOLU]
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
dubastiste
Bonsoir à tous,

je suis occupé à replacer ma base mysql sur un nouveau serveur mais j'ai un message d'erreur quand j'exécute des requêtes avec apostrophe.

Exemple:
=> C\'est le jeu du jour ( ca donne Erreur 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 ... )

ou

=> C'est le jeu du jour ( ca donne aussi Erreur 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 ... )

tandis que

=> C est le jeu du jour ( c'est ok )

Probleme
Ca fait un peu cloche sur le site des descriptions sans apostrophes unsure.gif
Je pourrais les modifier manuellement une par une, car une fois enregistré dans la base mysql alors je sais replacé des apostrophes mais sur + ou - 1500 désignations, ca va être du boulot.


Question
Il y a un moyen de faire accepter les apostrophes ?


Merci d'avance
sarc
Salut biggrin.gif

tu peux donner la requête complète ?
Jpourrai être plus avancé peut-être... wink.gif
Anonymus
La bonne synthaxe, pour un insert, par exemple, avec apostrophe, est :

CODE
INSERT INTO table (id,champ) VALUES ('','c\'est le jeu du jour');

Si tu as une erreur sql, c'est parce qu'il y a un apostrophe ou un anti-slash qui se promène sans raisons.
Pour résoudre le problème, il ne faut pas regarder ce que renvoie le navigateur, mais bien ce que renvoie le code source du navigateur.

Essaies d'afficher la requète en question (echo $query), et postes nous le code source. L'erreur y est wink.gif

Anonymus.
dubastiste
Merci pour vos réponses.

Voilà un exemple de requête:

CODE
INSERT INTO `content` VALUES (1, 2, 1108323180, 'jeu1', 'admin', 'C\' est le jeu du jour !', 'url.swf', 4, 1, 0, 0, '', 3, 0, 1, '0', 0, 1, 1, 1, 1, 1, 0, '', 'url.jpg', '');


En fait, avant de travailler sur le serveur, je fais des tests sur un vieux compte lycos-multimania. C'est une vieille version de phpmyadmin, peut être que sur une version plus récente, ca marchera car je ne vois pas d'apostrophe ou de anti-flash qui se promene sans raison.
Anonymus
Ca peut venir d'un problème de 'nombre de champs'. Verifies que tu aies bien 26 champs, dans la table 'content'. (et recomptes, je suis pas à l'abri d'une erreur wink.gif )

Tu devrais mettre, derrière 'content', le nom des champs. Ca leve ainsi toute ambiguité.
dubastiste
26 on compte la même chose (on est fort quand même hein tongue.gif ) et apparement la table correspond, je comprends pas !

Et au pire, j'enleverais les apostrophes et je les rajouterais une a une par la suite.

CODE
#
# Structure de la table `content`
#

CREATE TABLE `content` (
 `content_id` int(14) unsigned NOT NULL auto_increment,
 `content_cat` int(6) unsigned NOT NULL default '0',
 `content_time` int(14) unsigned NOT NULL default '0',
 `content_title` varchar(250) NOT NULL default '',
 `content_autor` varchar(60) NOT NULL default '',
 `content_text` text NOT NULL,
 `content_altdat` varchar(250) NOT NULL default '',
 `content_option` tinyint(1) NOT NULL default '1',
 `content_status` tinyint(1) NOT NULL default '1',
 `content_subid` int(14) NOT NULL default '0',
 `content_expire` int(14) unsigned NOT NULL default '0',
 `content_header` text NOT NULL,
 `content_autorid` int(14) unsigned NOT NULL default '0',
 `content_themeid` int(14) unsigned NOT NULL default '0',
 `content_views` int(6) unsigned NOT NULL default '0',
 `content_rating` double NOT NULL default '0',
 `content_rating_total` int(14) unsigned NOT NULL default '0',
 `content_comment_status` tinyint(1) NOT NULL default '1',
 `content_rating_status` tinyint(1) NOT NULL default '1',
 `content_ubb` tinyint(1) NOT NULL default '1',
 `content_html` tinyint(1) NOT NULL default '1',
 `content_smilies` tinyint(1) NOT NULL default '1',
 `content_filesize` int(14) unsigned NOT NULL default '0',
 `content_template` varchar(250) NOT NULL default '',
 `content_teaser` text NOT NULL,
 `content_related` text NOT NULL,
 PRIMARY KEY  (`content_id`)
) TYPE=MyISAM AUTO_INCREMENT=1837;


C'est peut-être la version de phpmyadmin de lycoch qui est trop vieille ???
Je vais essayer bientot sur une nouvelle version et je vous tiendrais au courant.

PS:Merci Anonymus.
xpatval
Salut,

Tu utilises bien addslashes(), avant l'INSERT ?

xpatval
dubastiste
Bonjour xpatval,

euh, je ne vois pas de addslashes() dans mon fichier sql. unsure.gif

En fait, je ne suis pas un pro, je suis même loin d'en être un, ceci explique la raison de mes tests sur lyly et non directement sur un nouveau serveur, si tu sais m'expliquer assez simplement comment exécuter du addslashes() rolleyes.gif ca serait sympa.
Striker
Explication de la fonction addslashes
http://www.nexen.net/docs/php/annotee/func....addslashes.php
sarc
Je crois que ce monsieur veut importer une table SQL à partir d'un fichier txt ou .sql, enfin bref, il ne travaille pas à partir d'un programme PHP mais à partir de PHPmyadmin je suppose...

Donc la fonction addslaches n'a rien à voir :/
dubastiste
CITATION(sarc @ lundi 25 avril 2005, 15h51)
Je crois que ce monsieur veut importer une table SQL à partir d'un fichier txt ou .sql, enfin bref, il ne travaille pas à partir d'un programme PHP mais à partir de PHPmyadmin je suppose...

Donc la fonction addslaches n'a rien à voir :/
*


Oui c'est exactement ca, je veut importer une table SQL à partir d'un fichier que j'ai sauvegardé voila un mois et dont l'extension est SQL.

Désolé si je n'emploi pas toujours les bons termes pour m'expliquer wacko.gif


PS: sarc, laisse le monsieur chez madame et appelle moi bastiste wink.gif
Striker
Quel est la version de MySQL dans laquelle tu veut mettre ta base.
Et la version MySQL d'où vient ta sauvegarde.

Si elles sont différentes comme par exemple 3.23 et 4.1 il faut le spécifier lors de la lecture du fichier sql.
Il me semble qu'il suffit de l'indiquer dans phpmyAdmin.
dubastiste
Voilà la question qui me ridiculise blush.gif


J'arrive pas à trouver la version sur lycos... Mais ca doit être une vieille.
Et je ne saurais pas dire la version qu'il y avait sur mon VPS (de ma sauvegarde donc) vu qu'il est mort evil.gif mais c'était sans doute une nouvelle version car elle était colorée et avec des icones partout rolleyes.gif

Vu que je vais prendre un dédié, je vais sans doute avoir une nouvelle version donc le problème des apostrophes sera "peut-être" résolu !
C'est pour le moment le seul problème que je rencontre.

Je vous tiendrais au courant.
Et merci pour vos réponses et votre aide wink.gif
Dan
Dubatiste,

Tu dois avoir la version mySql dans les premières lignes du fichier de dump de ta base, sous cette forme:
CODE
-- phpMyAdmin SQL Dump
-- version 2.6.1-pl3
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Lundi 25 Avril 2005 à 18:46
-- Version du serveur: 4.0.24

vraisemblablement avec des numéros de versions plus anciens... wink.gif
dubastiste
Décidement, vous avez réponse à tout !!! IMSTP3.gif

Ma sauvegarde:
# phpMyAdmin SQL Dump
# version 2.5.4

Mes test sur Lycos:
# phpMyAdmin MySQL-Dump
# version 2.2.1-dev

Je vais essayer de trouver un petit heb qui aurait une version plus recente de phpmyadmin pour faire mes tests en attendant de choisir un serveur dédié, à ce sujet, si peut-être vous savez encore m'aider ici et m'éclairer un peu sur le bon choix à faire.

De toute façon, je vous tiens au courant pour les apostrophes ainsi on aura une réponse fixe sur ce problème (en esperant donc que c'est une incompatibilité de version, si on peux appeller ca ainsi)

rolleyes.gif
Anonymus
CITATION(dubastiste @ lundi 25 avril 2005, 20h28)
Mes test sur Lycos:
# phpMyAdmin MySQL-Dump
# version 2.2.1-dev

Le "-dev" signifie 'en développement'. Autrement dit, une version pas "stable".
Ce n'est pas sérieux de la part de Lycos.
Mais surtout, la version n'est pas à jour, et ce depuis pas mal de versions déjà..

Imagines, on en est à 2.6..
dubastiste
Merci pour l'info Anonymus, faut dire que mes tests, c'est sur du lycos gratuit que je les fais, mais quand même pour être dépassé à ce point... rolleyes.gif

Je viens de tester sur un phpmyadmin 2.6.0-pl3 !
Résultat des courses, ca fonctionne sans aucun problème !

Je suis content, merci à tous de m'avoir aider B)
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.