0

次の php コードは、データベース内の重複レコードを見つけ、すべての類似レコードを削除し (そのうちの 1 つはそうではありません)、すべてのデータを時系列で並べ替え、最後にすべての行 (id フィールド) を 1 から n まで徐々に番号付けし直します。

問題: このコードを実行すると、テーブル名 "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");
4

1 に答える 1

0

見つける最も簡単な方法は、すべてのsの戻り値をテストし、すべてのクエリの後にmysql_query()エコーすることです。mysql_error()

どのステートメントが間違っているのか、そしてその理由がわかったら、それを修正する方法を決めることができます。

私が前もって質問するのは、tmp後でそれをさらに別のテーブルに置き換えるときに、なぜこの追加のステップをテーブルで行うのかということですriordinoid

さらに観察すると、テーブルをコピーするときは意味がWHERE 1ありません。ORDER BY birthdate

于 2012-11-17T00:16:05.173 に答える