bizarrerie de MySQL

WRInaute accro
Bonjour
Je suis en train de programmer sur mon ordi un package d'administration de sondages en PHP. J'en suis seulement à la conception de l'architecture et à la création des tables.

Théoriquement, la version de MySQL sur ma distro Linux fedora Core 4, est: 4.11, ce que je trouve en faisant: 'mysql --version' en ligne de commande.

V'la-t-y pas que cette après-midi, je concocte amoureusement un script pour me créer ces tables et index sur mon ordinateur, où j'ai aussi une copie de mon site ( voir profil ), avec sa base de données complète depuis le 1er Janvier 2000...

Je fais donc les instructions suivantes:

unset($query);
$query = "CREATE TABLE TABLES(ID_SONDAGE INTEGER NOT NULL,
ORDRE INTEGER NOT NULL,
NUM_TABLE INTEGER NOT NULL,
TYPE_ITEM INTEGER NOT NULL,
TEXTE_ITEM VARCHAR(100),
ITEM_VALUE VARCHAR(100),
NBRE_VOTES_ITEM INTEGER NOT NULL)";

unset($res);
$res = @mysql_query($query, $conn);
if(!$res)
{ echo @mysql_error($conn) . "<br>\n";
@mysql_close($conn);
die("");
}

Ces instructions parmi d'autres, vous l'avez deviné.
La connexion à la bdd est correcte, pas de problème.

Le script compile bien, je vérifie avec 'php -l script.php'

A l'exécution, j'ai une erreur à cet endroit: "bad SQL syntax, check the MySQL Manual for gnan gnan...". suivi de cette ligne "CREATE" etc...

Et, quand je change le nom de la table, de TABLES, à: TABLEAUX, là, pas d'erreur.

Cependant, la commande 'info mysql' donne bien les mots autorisés pour les noms de tables, il y a seulement des indications de types de caractères, genre: lettres et chiffres et souligné etc...

Il ne devrait pas y avoir de problème avec ce nom de table: TABLES, et pourtant celà donne une erreur SQL.

Bizarre, non ?

Merci beaucoup de me donner vos impressions.

Bien à vous.
Amicalement.

Jean-François Ortolo
 
WRInaute impliqué
TU as parfaitement le droit d'appeller une table Insert ou autre enfin sauf les mots vraiment interdits

Mais c'est juste qu'il faut protéger tes champs.

pour le colonnes, si tu appelles une colonne INSERT tu dois la protéger avec des reverse quote : `INSERT`

ALTGR+7 sur un clavier azerty

Bref voila refait un test en protégeant tes noms de table et de colonnes et ca devrait marcher

C'est vrai que par défaut ca marche, car mysql est intelligent mais c'est pas vraiment rendre service aux developpeurs à mon sens
 
WRInaute accro
Merci beaucoup bozoleclown

Ton info est bonne à savoir... ;)

Comme j'ai constaté qu'avec le nom de table TABLEAUX ça fonctionnait, j'ai choisi ce nom de table.

Cependant, ce script d'administration de sondages sera à usage perso, donc pas professionnel. Autrement il faudrait que j'ais un fichier de configuration avec les noms des tables à faire choisir par l'utilisateur avant l'installation du package.

J'ai créé les tables, je n'ai plus qu'à programmer...
L'avenir m'attend. ;)

Je suis en train de me demander si je vouerai ce package définitivement à un usage perso, ou sinon, si je pourrai faire des diagrammes graphiques de répartition des votes ( pour les questions à choix multiples. ) A vrai dire je n'en vois pas l'utilité pour moi, mais les autres apprécieraient peut-être ? En license GPL pourquoi pas, histoire de remplir les à-côtés de mon site...

Comme je suis en vacances du 22 au 27, je n'aurai terminé la mise au point, qu'après le début de l'année 2007.

J'ai calculé l'enregistrement des résultats des sondages, pour que la base de données ne soit que très faiblement impactée.

Bien à toi.
Amicalement.

Jean-François Ortolo
 
Discussions similaires
Haut