Als ik met phpMyAdmin een tabel wil maken, krijg ik altijd deze fout, maar hoe komt dat?



Fout

SQL-query:

CREATE TABLE `sites` (
`personID` INT( 111 ) NOT NULL ,
`site` SET( 222 ) NOT NULL ,
`ond` SET( 333 ) NOT NULL ,
`hosting` SET( 111 ) NOT NULL ,
`hostprijs` SET( 111 ) NOT NULL ,
`user` SET( 111 ) NOT NULL ,
`pass` SET( 111 ) NOT NULL ,
`ftp` SET( 111 ) NOT NULL ,
`client` SET( 333 ) NOT NULL ,
`opm` SET( 444 ) NOT NULL ,
`prijs` SET( 111 ) NOT NULL ,
`datum` VARCHAR( 111 ) NOT NULL
) ENGINE = MYISAM

MySQL retourneerde: Documentatie
#1064 - 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 '222) NOT NULL, `ond` SET(333) NOT NULL, `hosting` SET(111) NOT NULL, `hostprijs`' at line 1
De syntax van je query klopt niet. Kijk hier eens hoe je dat wel zou moeten doen.

Maar, ik snap bovendien niet waarom je SET gebruikt als datatype. Wat is er mis met een VARCHAR voor een string een in INT voor een integer. Met SET beperk je de input die in een kolom mag komen, namelijk met vooraf ingestelde waarden. En het lijkt me dat dat niet de bedoeling moet zijn!

Een laatste punt: de enige plaats waar je wel een VARCHAR gebruikt is nou net weer verkeerd! Een datum sla je gewoon op in een DATE veld. Lees de mysql handleiding er ook nog eens op na, en dan voor het hoofdstuk over datatypes.
Als ik varchar gebruik krijg ik hetzelfde:

#1064 - 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 '111) NOT NULL, `hostprijs` VARCHAR(111) NOT NULL, `user` VARCHAR(111) NOT NULL, ' at line 1
Hoe ziet je query er nu uit dan?
Ja, sorry, ik heb het allemaal met varchar gedaan, en nu werkt het toch!
Alleen voor de datum (dat is nu DATETIME) , heb ik

<?php
$datum=date("y-m-d H:i:s");
echo "<input type=\"hidden\" name=\"datum\" value=\"$datum\" />";
?>

.. in het form staan, maar dat geeft in de database
0000-00-00 00:00:00

Hoe kan ik de datum juist maken?
Als je de huidige datum in wilt voeren in een database gebruik je gewoon het commande NOW().

INSERT INTO tabel (datumtijdveld)
VALUES (NOW())

Geen tussenkomst van PHP dus meer!

ps. Alles VARCHAR zeg je? Maar personID, hostingprijs en prijs zijn toch geen strings?! Gebruik gewoon het juiste datatype voor bepaalde gegevens. personID hoort in een INT en een prijs zou ik zelf opslaan in een DECIMAL.

Reageren