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

标签 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 ) 有关。

最佳答案

据我了解,您运行此脚本两次。

第一次脚本执行:

  1. 创建表。
  2. 插入行

第二次:

  1. 尝试创建表,但出现错误,因为表已存在,并且没有任何反应
  2. 插入第二行

尝试添加此行来检查错误 - '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";

关于php - 简单的 INSERT 查询创建 2 条记录而不是 1 条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7643991/

相关文章:

php - CakePHP 3 中的 MVC - 模型和 View 之间的关注点分离

php - 将 unicode 代码转换为 UTF-8

php - 有关如何以编程方式为每个项目生成唯一 key 代码的问题?

mysql - MYSQL 中的 SELECT INNER JOIN SELECT by

php - 将结果数组分解为字符串?

php - 使用全选选项创建复选框表

搜索引擎

mysql - 如何在不在主机上发布端口的情况下访问在 docker 容器(由 Rancher 管理)中运行的 MySQL?

php - 将时间转换为秒数的函数

php - 查找最常见的数字范围