Errore durante la creazione della tabella: si è verificato un errore nella syntax SQL in prossimità di “ordine (order_id INT NON SEGNALATO NON NULL AUTO_INCREMENT, user_id” alla riga 1

Sto cercando di creare 2 tabelle nello stesso database MySQL con uno script PHP: tabella ‘utente’ con chiave primaria ‘user_id’ e tabella ‘ordine’ con chiave primaria ‘order_id’ e chiave esterna ‘user_id’ da ‘utente’ tabella (da 1 a molte relazioni).

L’utente della tabella crea correttamente senza problemi:

$sql="CREATE TABLE user( user_id INT UNSIGNED NOT NULL AUTO_INCREMENT, type ENUM('member','admin') NOT NULL, username VARCHAR(30) NOT NULL, email VARCHAR(80) NOT NULL, pass VARBINARY(32) NOT NULL, first_name VARCHAR(40) NOT NULL, last_name VARCHAR(40) NOT NULL, date_expires DATE NOT NULL, date_created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, date_modified TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (user_id), UNIQUE (username), UNIQUE (email) )ENGINE=InnoDB DEFAULT CHARSET=utf8"; 

Tuttavia, non sono in grado di creare l’ordine della tabella:

 $sql="CREATE TABLE order( order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL, transaction_id VARCHAR(19) NOT NULL, payment_status VARCHAR(15) NOT NULL, payment_amount DECIMAL(6,2) UNSIGNED NOT NULL, payment_date_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (order_id), FOREIGN KEY (user_id) REFERENCES user (user_id) )ENGINE=InnoDB DEFAULT CHARSET=utf8"; 

Ottengo il seguente errore:

 Error creating table: 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 'order( order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id ' at line 1 

Hai già controllato la syntax e non riesci a trovare l’errore. Potresti consigliare cosa è andato storto? Molte grazie.

    È necessario sfuggire le parole riservate come l’ order con i backtick

     CREATE TABLE `order` ( ... 

    o meglio usare un altro nome invece.

    order è una parola chiave usata da mysql like (seleziona da tbl_name order by id ASC) quindi per evitare di usare le parole chiave devi usare le virgolette “ per evitare il mio errore sql

    quindi la tua query dovrebbe

     $sql="CREATE TABLE `order` ( order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL, transaction_id VARCHAR(19) NOT NULL, payment_status VARCHAR(15) NOT NULL, payment_amount DECIMAL(6,2) UNSIGNED NOT NULL, payment_date_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (order_id), FOREIGN KEY (user_id) REFERENCES user (user_id) )ENGINE=InnoDB DEFAULT CHARSET=utf8"; 

    divertiti: D