【发布时间】:2015-08-12 00:42:18
【问题描述】:
我遇到了一个问题,希望有人可以帮助我。
我的问题是,每当我在“MainFile”中运行代码时,它会输出添加条目的两个 ID,但是当我查看我的数据库时,我有 六个 条目两个...谁能告诉我为什么会这样?
注意:我只提供了类中代码的 sn-ps,因为提供完整类的代码太多了。这是唯一被执行的代码。
编辑历史中的代码
编辑:我在这篇文章的底部添加了一个调试日志,以验证我只为每个查询执行一次 SQL 代码。
编辑:我不再使用序列化方法,因为存储这种类型的数据显然是个坏主意。然而,即使我的新代码将每个单独的值存储在数据库中,我仍然得到三个条目而不是一个。所以,这是同一个问题。有什么事吗?
编辑:经过几天的调试,我已将其范围缩小到导致问题的这一行
Throwlite::$systemSQL->executeSql("INSERT into ".SQL_COMMENTTHREADS_TABLE." (id, sort_order) values (DEFAULT, '2')");
您可以在此处查看 LiteSQL 类以供参考:http://pastebin.com/a4C6fF4u
另外,作为参考,这里是用于创建表的代码:
"CREATE TABLE IF NOT EXISTS `" . SQL_COMMENTTHREADS_TABLE . "` (`id` int unsigned NOT NULL AUTO_INCREMENT, `sort_order` int NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;"
而且,尽管我很确定这无关紧要,但这里是定义 SQL_COMMENTTHREADS_TABLE 的地方。
define( 'SQL_COMMENTTHREADS_TABLE', "tl_comment_threads");
【问题讨论】:
-
@shA.t 应该很明显它是 PHP,但我添加了标签以防万一。有什么帮助吗?
-
我认为您的问题不在于 MySQL 行为,而在于您的 PHP 代码,我无法为您提供帮助;)。
-
数据库中的触发器可能会导致此行为。
-
您使用 MySQL 集群版本吗?我曾经在本地安装的集群版本(用于测试目的的同一台机器上所有节点的集群版本)遇到过类似的问题。
-
顺便说一句,您在发布的 pastebin 的第 51 行缺少第二个
}。if(sizeof($binds) > 0){没有关闭。
标签: php mysql sql duplicates sql-insert