自动创建表(如果不存在)导致错误

时间:2018-08-19 21:29:40

标签: php sql mysqli

我正在尝试创建以下表格。查询在phpmyadmin中有效,但在php脚本中无效。请指出我的代码中的错误。谢谢

    $sql = "CREATE TABLE IF NOT EXISTS `portal` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `message_sid` varchar(255) NOT NULL,
  `name` varchar(255) NOT NULL,
  `number` varchar(255) NOT NULL,
  `message` text NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `status` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1";
    if (mysqli_query($conn, $sql)) {
    echo "Table portal created successfully";
    } else {
        echo "Error creating table: " . mysqli_error($conn);
    }

我收到此错误:

You have an error in your SQL syntax;
check the manual that corresponds to your MariaDB server version for the 
right syntax to use near '`id` int(255) NOT NULL AUTO_INCREMENT,  
`message_sid` varchar(255) NOT NULL' at line 2

2 个答案:

答案 0 :(得分:0)

我通过检查表是否存在于php中来完成此操作,如果不存在则创建一个新表 创建表最好是使用phpmyadmin导出一个已经存在的表,然后将其用作查询语法

答案 1 :(得分:-1)

从表名和行名中删除单引号

如果您将id设为主键自动递增,请不要使其不为null,这会导致错误。

我不确定为什么要投反对票。

CREATE TABLE IF NOT EXISTS portal ( 
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
message_id VARCHAR(30) NOT NULL, 
name VARCHAR(30) NOT NULL, 
email VARCHAR(50) NOT NULL, 
number VARCHAR(50) NOT NULL, 
message text NOT NULL, 
created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
status VARCHAR(50) NOT NULL )ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1

这将起作用