Bij een Insert op een tabel met auto_increment veld komt MySQL met een 1064 error. Daarop heb ik met phpmyadmin een record in gevoerd en gezien dat deze er het volgende van maakt:
INSERT INTO TABLE ('id','name','etc') VALUES (NULL, 'Piet', 'verder')
(Het id veld is een auto_increment veld)
Nu zit het hem in die NULL, als ik die met quotes invoer dan is het een string en als ik de constante NULL opgeef dan is die leeg (maar blijkbaar geen NULL)
Weet iemand hoe je dit oplost, zonder die auto_increment er uit te kieperen.

Groet Cees
INSERT INTO TABLE ('id','name','etc') VALUES (NULL, 'Piet', 'verder')

-->

INSERT INTO TABLE (id, name, etc) VALUES (NULL, 'Piet', 'verder')

Maar ik denk niet dat dit het probleem was, want dit zal je wel hier ter illustratie getypt hebben zonder na te denken.


Werk dit:

INSERT INTO tabel (name, etc) VALUES ('Piet', 'verder')

?
INSERT INTO stat_server ( 'name','ipno','port','admin','software' ) VALUES ('localhost','127.0.0.1','80','UsbWebserver','Apache/2.2.0 (Win32) PHP/5.1.6' )

Dit is wat ik wil, want ik dacht dat hij zelf dat autoveld wel deed.

PhpMyAdmin maakt dit:
INSERT INTO `stat_server` (`sid`, `name`, `ipno`, `port`, `admin`, `software`) VALUES (NULL, 'localhost', '127.0.0.1', '80', 'UsbWebserver', 'Apache/2.2.0 (Win32) PHP/5.1.6''');

Het zal wel iets simpels zijn waar ik over heen kijk

Groet Cees
Jouw eigen query is sowieso niet goed, vanwege de aanhalingstekens om de veldnamen. En dat ie bij NULL geen auto_increment doet is wel raar. Weet je zeker dat auto_increment op die row aan staat (domme vraag sorry). En zijn er niet te veel rijen voor het type? Dus stel sid is INT(3) en er staan al 1 miljoen rijen in, dan wil die ook nog wel eens problemen geven :-)

Verder vallen de 3 afsluitende aanhalingstekens in de tweede query me op (achter "PHP 5.1.6"). Dat hoort niet.
De grap is dat die aanhalingstekens geen probleem geven bij een select statement, ik zal ze eens weghalen.

Maar phpmyadmin zet er ook tekens om, andere waar ik de naam niet van weet-

De 2e query heb ik gewoon gekopieerd uit het phpmyadmin venster, want na het uitvoeren laat hij deze gewoon in een venster zien. Dus inderdaad met die extra quotes, was mij niet direct opgevallen
Het waren de aanhalingstekens, nu heb ik ` gebruikt en dan werkt het zonder dat ik het increment veld hoef te noemen.

INSERT INTO stat_server ( `name`,`ipno`,`port`,`admin`,`software` ) VALUES ('localhost','127.0.0.1','80','UsbWebserver','Apache/2.2.0 (Win32) PHP/5.1.6' )

Deze deed een goede INSERT

Bedankt voor het meedenken en de tip over die aanhalingstekens.

Groet Cees
Geen probleem.

trouwens,

` = backtick
Ik wil jullie ook bedanken, ik heb ook een enorm mooie fout gemaakt. Ik heb NULL dus niet ingevoerd bij een auto incrediment tabel. Thanks :D
Alexander schreef op 26.04.2007 20:36
Ik wil jullie ook bedanken, ik heb ook een enorm mooie fout gemaakt. Ik heb NULL dus niet ingevoerd bij een auto incrediment tabel. Thanks :D


Dat is op zich ook niet nodig. Je kunt ook gewoon de hele row weglaten uit je INSERT-query.
Oke, dus het zou nog steeds niet werken. Met NULL erbij?
Zonder die vage backtics moet ie ook werken.
INSERT INTO stat_server (name, ipno, port, admin, software) VALUES ('localhost', '127.0.0.1', '80', 'UsbWebserver', 'Apache/2.2.0 (Win32) PHP/5.1.6')

Reageren