Je suis nouveau sur PHP
et MySQL
et j'ai eu un petit problème avec un projet d'apprentissage sur lequel je travaille.
Chaque fois que j'essaie de créer une table
CREATE TABLE transactions(
id int NOT NULL AUTO_INCREMENT,
location varchar(50) NOT NULL,
description varchar(50) NOT NULL,
category varchar(50) NOT NULL,
amount double(10) NOT NULL,
type varchar(6) NOT NULL,
notes varchar(512),
receipt int(10),
)
Je reçois le message d'erreur suivant:
# 1064 - Vous avez une erreur dans votre syntaxe SQL; Consultez le manuel correspondant à la version de votre serveur MySQL pour connaître la syntaxe à utiliser près de ') NOT NULL, tapez varchar (6) NON NULL, note varchar (512), reçu int (10), à la ligne 6 **
Voici quelques informations sur ce avec quoi je travaille
J'ai passé une journée à me cogner la tête contre le mur et je pense qu'il est temps de demander de l'aide. Je me demandais si quelqu'un pouvait me dire ce que je faisais mal?
Supprimer la virgule
receipt int(10),
Et aussi AUTO INCREMENT
devrait être un CLÉ
Le type de données double
requiert également la précision des décimales; la syntaxe correcte est donc double(10,2)
Une chose évidente est que vous devrez enlever la virgule ici
receipt int(10),
mais le problème est en raison de la ligne
amount double(10) NOT NULL,
changez le en
amount double NOT NULL,
Dans MySQL, le mot "type" est un mot réservé.
Je vois deux problèmes:
Les définitions de précision DOUBLE (10) nécessitent un nombre total de chiffres, ainsi qu'un nombre total de chiffres après la décimale:
DOUBLE (10,8) Aurait un total de dix chiffres, 8 étant autorisés après la virgule.
En outre, vous devrez spécifier votre colonne id en tant que clé:
CREATE TABLE transactions(
id int NOT NULL AUTO_INCREMENT,
location varchar(50) NOT NULL,
description varchar(50) NOT NULL,
category varchar(50) NOT NULL,
amount double(10,9) NOT NULL,
type varchar(6) NOT NULL,
notes varchar(512),
receipt int(10),
PRIMARY KEY(id) );
Règle 1: Vous ne pouvez pas ajouter une nouvelle table sans spécifier la contrainte primary key
[ce n’est pas une bonne pratique si vous la créez en quelque sorte] . Ainsi, le code:
CREATE TABLE transactions(
id int NOT NULL AUTO_INCREMENT,
location varchar(50) NOT NULL,
description varchar(50) NOT NULL,
category varchar(50) NOT NULL,
amount double(10,9) NOT NULL,
type varchar(6) NOT NULL,
notes varchar(512),
receipt int(10),
PRIMARY KEY(id));
Règle 2: Vous n'êtes pas autorisé à utiliser les mots-clés (mots avec une signification prédéfinie) comme nom de champ . Ici, type est similaire à celui utilisé (couramment utilisé avec Join Types) .Alors le code:
CREATE TABLE transactions(
id int NOT NULL AUTO_INCREMENT,
location varchar(50) NOT NULL,
description varchar(50) NOT NULL,
category varchar(50) NOT NULL,
amount double(10,9) NOT NULL,
transaction_type varchar(6) NOT NULL,
notes varchar(512),
receipt int(10),
PRIMARY KEY(id));
Maintenant, essayez avec ce code . Commencez par le vérifier dans votre interface utilisateur de base de données (je suis sous HeidiSQL, ou vous pouvez l’essayer également sur votre serveur xampp/wamp) et assurez-vous que ce code fonctionne. Supprimez maintenant la table de votre base de données et exécutez le code dans votre programme ..__ Merci.