繁体   English   中英

用引号在php mysql中创建表

[英]creating table in php mysql with quotation

我正在尝试通过运行php mysql查询

 mysql_query("CREATE TABLE `user` (`id` NOT NULL INT,`username`  VARCHAR(30),`password`  VARCHAR(30))");

它给我错误

 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 'NOT NULL INT,`username`  VARCHAR(30),`password`  VARCHAR(30))'

我是php mysql的新手,如何修复此语法?

它应该是:

mysql_query("CREATE TABLE `user` (`id` INT NOT NULL ,`username`  VARCHAR(30),`password`  VARCHAR(30))");

不:

mysql_query("CREATE TABLE `user` (`id` NOT NULL INT,`username`  VARCHAR(30),`password`  VARCHAR(30))");

顺便说一句,不要使用不推荐使用的mysql_函数,在以后的php版本中,它们将被删除。 改用mysqli_,使用它们几乎相同。

文档

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    ...

create_definition:
    col_name column_definition
    ...

column_definition:
    data_type [NOT NULL | NULL]
      [DEFAULT default_value]
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
      ...

data_type:
    BIT[(length)]
    ...
  | INT[(length)] [UNSIGNED] [ZEROFILL]

换句话说, INT (或任何数据类型定义 )应始终位于NOT NULL (或NULL修饰符之前 实际上,对于任何修饰符DEFAULTAUTO_INCREMENTUNIQUE等等,都是如此。


附带说明一下,即使您正在PHP-MySQL中迈出第一步,我还是建议您开始学习mysqliPDO扩展-这些扩展比mysql更复杂,但这是值得的。

在2014年开始使用mysql扩展将是浪费时间-已经过了很长时间了。 这是在intro页上说的:

自PHP 5.5.0起不推荐使用该扩展,不建议编写新代码,因为将来会删除该扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM