用引号在php mysql中创建表

时间:2014-09-13 19:38:10

标签: php mysql

我正在尝试通过

运行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的新手如何修复这种语法?

2 个答案:

答案 0 :(得分:1)

应该是:

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_代替,使用它们几乎是一样的。

答案 1 :(得分:1)

来自the doc

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扩展 - 这些扩展比{{{{}}更复杂一些3}},但这是值得的。

在2014年进入mysql扩展 将浪费时间 - 它已经被弃用了相当长的时间。以下是intro页面上的内容:

  

自PHP 5.5.0起,此扩展程序已弃用,不建议使用   用于编写新代码,因为它将来会被删除。