繁体   English   中英

PDO和MySQL的SQL语法错误,其他地方都没有

[英]SQL Syntax Error with PDO and MySQL, Not Anywhere Else

我在Sequel Pro中创建了一个表,并导出了创建表语法。 在我看来,一切看起来都很好。 问题是,我正在尝试使用PDO运行查询,并且遇到语法错误:

General error: 1 near "UNSIGNED": syntax error

如果再次在Sequel Pro中运行该查询,或者在PHPMyAdmin中运行该查询,则查询工作正常。 关于为什么该查询仅在PDO中失败的任何线索?

CREATE TABLE `users` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) UNSIGNED DEFAULT NULL,
  `name` varchar(30) NOT NULL,
  `email` varchar(50) NOT NULL,
  `password` varchar(60) NOT NULL,
  `passwordResetKey` varchar(8) DEFAULT NULL,
  `activationKey` varchar(8) DEFAULT NULL,
  `permissions` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `parent_id` (`parent_id`),
  CONSTRAINT `users_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

注意:为了清楚起见,我在上面包括了换行符,但是运行的查询中没有换行符。

运行查询的代码:

$query = 'CREATE TABLE `users` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `parent_id` int(11) UNSIGNED DEFAULT NULL, `name` varchar(30) NOT NULL, `email` varchar(50) NOT NULL, `password` varchar(60) NOT NULL, `passwordResetKey` varchar(8) DEFAULT NULL, `activationKey` varchar(8) DEFAULT NULL, `permissions` smallint(5) UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `parent_id` (`parent_id`), CONSTRAINT `users_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `users` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1';
$statement = $conn->prepare($query);
$statement->execute();

就我而言,事实是问题出在运行查询之前,我没有正确连接到数据库。 该代码用于安装脚本,因此它在运行查询的页面之前的页面上检查了数据库凭据。

然而,在设置页面中,应用程序是设置,使数据库必须明确地连接(当我被检查凭证,但运行这些查询的发生)。 我要做的就是正确连接到数据库,查询开始起作用。

暂无
暂无

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

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