代码之家  ›  专栏  ›  技术社区  ›  blackjak231

install script mysql syntax error“您的SQL语法有错误;[…]”

  •  2
  • blackjak231  · 技术社区  · 14 年前

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

    您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以获得在“创建表”附近使用的正确语法。 active_guests ( ip varchar(15)第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`)
            );';
    

    在那之后还会继续,但基本上就是这样。有人能把事情弄清楚吗?事先谢谢!

    1 回复  |  直到 14 年前
        1
  •  4
  •   Bill Karwin    14 年前

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

    所以你必须跑 SET SQL_MODE ... 然后分别运行第一个 CREATE TABLE ...


    回复您的意见:我建议您坚持每次调用运行一个语句 MySqLQueQuess() 或其在mysqli或pdo中的等价物。这样做确实没有明显的缺点,而且这是防止某些形式的 SQL injection .