2016-05-04 14 views
1

私は以下のSQLをMicrosoft SQL Serverに対して実行しようとしています。SQL Server不適切な構文 '' 'の近く

$rs = odbc_exec($conn, "INSERT INTO tGuest (`GuestName`, `GuestEmailAddress`, `GuestPassword`, `GuestCity`, `GuestCountry`) VALUES ('test', 'test', 'test', 'test', 'test');"); 

私は以下のエラーでアップenedしかし:私はSQLコードに何かを見ることができない

[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near '`'. 

私は何かが欠けていたり間違っている何か他のものがあるので、もしわかりません。

+1

「 '';を削除するだけ) – Devart

+0

これを削除してください。完了したら –

+2

ODBCを使用しても、各ターゲットDBMSでサポートされているネイティブSQLコードを使用する必要があります。 –

答えて

5

SQL Serveridentifiersを引用する[]/"を使用しています。あなたの場合

Delimited identifiers

Are enclosed in double quotation marks (") or brackets ([ ]). Identifiers that comply with the rules for the format of identifiers might not be delimited.

$rs = odbc_exec($conn, "INSERT INTO tGuest ([GuestName], [GuestEmailAddress], [GuestPassword], [GuestCity], [GuestCountry]) VALUES ('test', 'test', 'test', 'test', 'test');"); 

あなたの識別子が有効であるので、あなたはまた、すべてでそれをスキップすることができます:

INSERT INTO tGuest(GuestName,GuestEmailAddress,GuestPassword,GuestCity,GuestCountry) 
VALUES ('test', 'test', 'test', 'test', 'test'); 

をあなたの命名規則は重複しているようです。テーブルの名前がtGuestの場合、カラムの先頭にはGuestを付ける必要はありません。

+0

私は実際にこの名前付け変換が好きで、それを自分で使います。テーブル名やエイリアスを列識別子の一部として使用する必要がないため、複数の結合クエリを記述するときに非常に便利です。また、予約語を列名として使用することをほぼ完全に防ぎます。 –

関連する問題