以下php代码在数据库中查找欺骗记录,删除所有类似记录(但其中一个没有),按时间顺序重新排序所有数据,最后逐步将所有行(id字段)从1重新编号到ñ
问题:当我执行此代码时,会发生表格“mytable”在“tmp”中更改,一切都会停止并出错。
为什么这样?我该如何解决这个问题?
$creatmp = mysql_query("CREATE TABLE tmp AS SELECT * FROM mytable WHERE 1 GROUP BY name, surname, birthdate");
$cancqsos = mysql_query("DROP TABLE mytable");
$datmpaqsos = mysql_query("ALTER TABLE tmp RENAME TO mytable");
$creariordinoid = mysql_query("CREATE TABLE riordinoid LIKE mytable");
$popolariordinoid = mysql_query("INSERT INTO riordinoid SELECT * FROM qsos ORDER BY birthdate");
$svuotacampoid = mysql_query("ALTER TABLE `riordinoid` DROP `id`");
$ricontauno = mysql_query("ALTER TABLE `riordinoid` AUTO_INCREMENT = 1");
$ricontadue = mysql_query("ALTER TABLE `riordinoid` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;");
$svuotaqsos = mysql_query("DROP TABLE mytable");
$rinominariordinoid = mysql_query("ALTER TABLE riordinoid RENAME TO mytable");
答案 0 :(得分:0)
最简单的方法是在每次查询后测试所有mysql_query()
和echo mysql_error()
的返回值。
如果你知道哪个陈述出错了,为什么,你可以决定如何解决它。
我之前提出的问题是,为什么在使用表格tmp
进行此额外步骤时,为什么稍后将其替换为另一个表格riordinoid
。
进一步观察,复制表时WHERE 1
和ORDER BY birthdate
没有任何意义。