0

我不断收到此错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“Name int(10) NOT NULL, Middle Name varchar(10) NOT NULL, Last Name varch”附近使用正确的语法

而且我不确定我犯了什么错误...

<?php 
mysql_connect('klaic.db.11427125.hostedresource.com', 'klaic', '*******')
or die (mysql_error());
mysql_select_db('klaic')
or die (mysql_error());
mysql_query("create table account(
   Fist Name int(10) NOT NULL, 
   Middle Name varchar(10) NOT NULL, 
   Last Name varchar(10) NOT NULL,
   Email varchar(55) NOT NULL,
   Comfirm Email varchar(55) NOT NULL,
   D.O.B varchar(10) NOT NULL,
   ID int(11) NULL,  
   PRIMARY KEY (ID)
)") or die (mysql_error());
echo "Complete.";
?>
4

4 回答 4

4

如果您的列名中有空格,这不是一个好主意,您需要将它们包装在刻度中:

mysql_query("create table account(
   `Fist Name` int(10) NOT NULL, 
   `Middle Name` varchar(10) NOT NULL, 
   `Last Name` varchar(10) NOT NULL,
   `Email` varchar(55) NOT NULL,
   `Comfirm Email` varchar(55) NOT NULL,
   `D.O.B` varchar(10) NOT NULL,
   `ID` int(11) NULL,  
   PRIMARY KEY (ID)
)") or die (mysql_error());
于 2013-07-15T15:03:05.940 回答
2

架构对象名称下所述:

MySQL 中的某些对象,包括数据库、表、索引、列、别名、视图、存储过程、分区、表空间和其他对象名称,称为标识符。

[删除]

标识符在内部转换为 Unicode。它们可能包含以下字符:

  • 不带引号的标识符中允许的字符:

    • ASCII:[0-9,az,AZ$_](基本拉丁字母,数字 0-9,美元,下划线)

    • 扩展:U+0080 .. U+FFFF

  • 带引号的标识符中允许的字符包括完整的 Unicode 基本多语言平面 (BMP),但 U+0000 除外:

    • ASCII:U+0001 .. U+007F

    • 扩展:U+0080 .. U+FFFF

[删除]

标识符引号字符是反引号(“<code>`”):

因此,要在列名中包含空格/点/等(这通常是一个坏主意),必须在反引号中引用标识符:

CREATE TABLE account (
   `Fist Name` int(10) NOT NULL, 
   `Middle Name` varchar(10) NOT NULL, 
   `Last Name` varchar(10) NOT NULL,
   `Email` varchar(55) NOT NULL,
   `Comfirm Email` varchar(55) NOT NULL,
   `D.O.B` varchar(10) NOT NULL,
   `ID` int(11) NULL,  
   PRIMARY KEY (ID)
)
于 2013-07-15T15:10:19.490 回答
1

如果使用空格,请在 SQL 语句的列名中使用重音符号 `。正确的 SQL 语句是:

SELECT * FROM `account` WHERE create table account(
   `First Name` int(10) NOT NULL, 
   `Middle Name` varchar(10) NOT NULL, 
   `Last Name` varchar(10) NOT NULL,
   `Email` varchar(55) NOT NULL,
   `Comfirm Email` varchar(55) NOT NULL,
   `D.O.B` varchar(10) NOT NULL,
   `ID` int(11) NULL,  
   PRIMARY KEY (ID)
)

尖端:

  1. 不要在列名中使用空格和大写字母!
  2. ID 应该是“自动递增的”
  3. First Name(您在声明中丢失了一封信;))应该是 INT 吗?
于 2013-07-15T15:09:05.267 回答
0

亲爱的,请记住,当您给出列名时,不要在其中留出空间。例如,如果您想让表字段名称为“First Name”,则它可以是“First_name”或“FirstName”,所以您可能会是这样

<?php 
mysql_connect('klaic.db.11427125.hostedresource.com', 'klaic', '*******')
or die (mysql_error());
mysql_select_db('klaic')
or die (mysql_error());
mysql_query("create table account(
   Fist_Name int(10) NOT NULL, 
   Middle_Name varchar(10) NOT NULL, 
   Last_Name varchar(10) NOT NULL,
   Email varchar(55) NOT NULL,
   Comfirm_Email varchar(55) NOT NULL,
   D.O.B varchar(10) NOT NULL,
   ID int(11) NULL,  
   PRIMARY KEY (ID)
)") or die (mysql_error());
echo "Complete.";
?>
于 2013-07-15T15:05:42.487 回答