简单INSERT查询创建2条记录而不是1条记录

时间:2011-10-04 06:23:47

标签: php mysql

你有一个简单的表,一个简单的INSERT查询和一个非常奇怪的结果。第二个mysql_query调用创建了2个空记录,而不是单个空查询。为什么呢?

mysql_query("
    CREATE TABLE `users` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `email` varchar(255) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8");

mysql_query("INSERT INTO `users` SET `users`.`id` = NULL");

注意:在phpMyAdmin中运行查询会得到预期的结果 - 创建一条记录。

编辑:

将以下mysql_query调用添加到代码段的开头可以修复它。

mysql_query("DROP TABLE `users`");

编辑:

原来这个问题与mod_rewrite(related question)有关。

2 个答案:

答案 0 :(得分:3)

据我所知,你运行这个脚本两次。

第一次脚本执行:

  1. 创建表格。
  2. 插入行
  3. secont时间:

    1. 尝试创建表,但是因为表已经存在而没有任何反应而出现错误
    2. 插入第二行
    3. 尝试添加此行以检查错误 - 'echo mysql_error()。“\ n”;'。例如 -

      mysql_query("
          CREATE TABLE `users` (
            `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
            `email` varchar(255) NOT NULL,
            PRIMARY KEY (`id`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
      
      echo mysql_error()."\n";
      

答案 1 :(得分:-1)

尝试使用INSERT INTO users (id) VALUES (NULL)