Syntax error in INSERT INTO Statemen

Sandro Feuillet

Legendäres Mitglied
Beim folgenden PHP Code:
CODE
$odbc=odbc_connect("asca", "","") or die("connection error");
$q="insert into work (date,agent) values ('1', '2')";
print $q;
odbc_exec($odbc, $q) or die("<p>write error</p>");
erhalte ich diese Fehlermeldung:
QUOTE
insert into work (date,agent) values ('1', '2')
Warning: SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement., SQL state 37000 in SQLExecDirect in H:\Data\ccpub\asca\index.php on line 11

error
kann da jemand den Syntax error sehen? Ich weiss nicht was daran falsch sein sollte...
wink.gif


Gruss & Danke

Sandro
 
"Date" ist ein Schlüsselwort in Access, verwende ich deshalb nie als Feldnamen. Versuchs mal so (sofern das beides Textfelder sind):

insert into work ([date],agent) values ('1', '2')

Griessli
Irene
 
genau, verwende date nicht als spaltennamen! dasselbe gilt für order etc. ob irenes vorschlag funktioniert weiss ich nicht, ich denke aber eher nicht in PHP.
 
hi zusammen

habe eine lösung gefunden auf php.net:
QUOTE
If you're receiving a 'Syntax error in INSERT INTO ..<snip>.. SQL State 37000 in SQLExecDirect' error, try enclosing the field names between square brackets.

ex:

INSERT INTO whatever ([blah],[who],[what]) VALUES ('blah','blah','blah');

I spent 4 hours tryin to get this insert statement (without the []'s) to work. This seems to have fixed it.

[]'s, apparently according to MS, should be used with table/field names with spaces. Im not sure if this is an MS ODBC thing, or a PHP flaw.

tested with: win32/php4.0.6/apache1.3.20/odbc/mdac2.6sp1
wenn ich die values in eckige klammern setze, funktionnierts...

die spalte werde ich wohl dennoch umbenennen,

vielen dank,

gruss sandro
 
hrm danke für die info auch @irene mit den [], werde diese variante wohl dennoch nie benützen, aber man kann nie klug genug sein.
smile.gif

 
Gelten die eckigen Klammern auch für mysql?

Einer meiner Lieblingsspaltenanmen ist eben "desc" ;-)
 
ich glaube nicht, dass das für mysql gilt. das ist doch wieder so eine microsoft idee, denke ich mal. bin aber zu faul, es zu testen.

meine devise: es gibt wörter und namen, die benützt man einfach nicht! (wie z.b. eben "order", "desc", "insert" oder "aubert"!
laugh.gif
)
 
QUOTE []'s, apparently according to MS, should be used with table/field names with spaces. Im not sure if this is an MS ODBC thing, or a PHP flaw.Das betrifft nicht nur Leerzeichen, sondern allgemein Sonderzeichen in Feldnamen. Das Problem liegt weder bei ODBC noch bei PHP, sondern bei der DB-Engine. Je nachdem, wie diese die SQL-Befehle parst und interpretiert, fällt sie auf die Nase, wenn sie ein Schlüsselwort im falschen Kontext findet.
QUOTE (Josh @ Di 12.10.2004, 14:19)
 
Das fiese ist, bei Mysql kann man einstellen, ob man solche Feldernamen zulassen will. Also hat es immer funktioniert, ich wusste das gar nie, bis ich mal tiefer in die Materie kam ;-) Es heissen halt immernoch ein paar Spalten desc, da es halt viele Sachen gibt, die eine description haben ;-)

Gibts da eine vollständige Liste?
http://dev.mysql.com/doc/mysql/en/Reserved_words.html
 
Zurück
Oben