sql - 安装脚本MySQL语法错误 "You have an error in your SQL syntax; [...] "

标签 sql mysql mysql-error-1064

我的网站上有一个安装脚本,当我运行它时,它给了我这个错误:

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 'CREATE TABLE active_guests ( ip varchar(15) collate latin1_general_' at line 2

这是似乎有错误的代码:

$sql = 'SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
        CREATE TABLE `active_guests` (
          `ip` varchar(15) collate latin1_general_ci NOT NULL,
          `timestamp` int(11) unsigned NOT NULL,
          PRIMARY KEY  (`ip`)
        );'; 

mysql_query($sql,$con) or die(mysql_error());

$sql = 'CREATE TABLE `active_users` (
           `username` varchar(30) collate latin1_general_ci NOT NULL,
           `timestamp` int(11) unsigned NOT NULL,
           PRIMARY KEY  (`username`)
        );';

mysql_query($sql,$con) or die(mysql_error());

$sql = 'CREATE TABLE `banned_users` (
           `username` varchar(30) collate latin1_general_ci NOT NULL,
           `timestamp` int(11) unsigned NOT NULL,
           PRIMARY KEY  (`username`)
        );';

之后还会继续,但基本上就是这样。任何人都可以澄清事情吗?提前致谢!

最佳答案

每次调用 mysql_query() 时只能运行一条语句。

因此,您必须运行SET SQL_MODE ...,然后单独运行第一个CREATE TABLE ...


回复您的评论:我建议您坚持每次调用 mysql_query() 或 mysqli 或 PDO 中的等效项时运行一个语句。这样做确实没有明显的缺点,而且这是防止某些形式的 SQL injection 的好方法。 .

关于sql - 安装脚本MySQL语法错误 "You have an error in your SQL syntax; [...] ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376408/

相关文章:

mysql - 如何修复 SQL 错误 1064?

php - 如何在 Eloquent laravel中检查hasMany关系记录为空

mysql - 如何加快对任何列子集的按计数分组查询?

mysql - 加速MSSQL到MySQL的插入

mysql - 在 MySQL 8.0+ 中使用 MySQL 驱动程序在 MySQL 语句中传递 C++ 变量

mysql 不被识别为内部或外部命令、可运行程序或批处理

第 6 行的 PHP 解析错误...似乎是我忽略的简单问题。

MySQL 使用触发器基于另一个表更新列

mysql - 每次 COUNT() 评论 vs 在 count_comments 列中缓存 vs 使用另一种类型的缓存

创建触发器时的 MySQL 语法错误