我正在尝试使用此功能在我的数据库中创建一些表。
但是我收到了这个错误:
创建表时出错:SQL语法中有错误;查看与MariaDB服务器版本对应的手册,以便在'UNSIGNED AUTO_INCREMENT,ip VARCHAR(65)NOT NULL附近使用正确的语法,在第2行尝试INT(11)'
就此:
$dbprefix = 'duh_';
$prefixloginAttempts = $dbprefix . 'loginAttempts';
$table = array();
$table[] = "CREATE TABLE IF NOT EXISTS $prefixloginAttempts (
id INT(11) NOT NULL UNSIGNED AUTO_INCREMENT,
ip VARCHAR(65) NOT NULL,
attempts INT(11) NOT NULL,
lastLogin DATETIME NOT NULL,
username VARCHAR(65) NOT NULL,
mod_timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY ('id'),
UNIQUE KEY 'id_UNIQUE' ('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
foreach ($table as $sql) {
$query = $conn->query($sql);
}
有人能看到失败的地方吗?我不能......
答案 0 :(得分:1)
MySQL提供的错误消息包含解析停止的部分查询。错误通常出现在... near "..."
消息中列出的查询部分的第一个单词上,或者就在它之前。
在此查询中,问题出在UNSIGNED
关键字上。它是data type的一部分,必须在INT(11)
之后保持正确:
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
了解CREATE TABLE
statement的语法。
索引的定义也有错误。列名用撇号括起来,这使它们成为字符串而不是对象名。
对象名称可以不加引号,如果它们也是SQL keywords or MySQL reserved words,那么它们必须用反引号(`
)括起来:
PRIMARY KEY (id),
UNIQUE KEY id_UNIQUE (id)
或
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`)
阅读when to use single quotes, double quotes or backticks in MySQL。