1

次のコードがあります

<?php

        $result = mysql_query("SELECT * FROM table1");
        $row = mysql_fetch_row($result);

        while($row = mysql_fetch_array($result))
        { 
            //Do some process

            //Then delete this row 
        }

while ループ内の各行を削除する必要があります。

可能ですか?このテーブルには主キーがありません

4

3 に答える 3

1

できません。MySQL はどのレコードを削除すればよいかわかりません。

主キーを使用するか、すべてのフィールドを追加して を追加してLIMITも、それがその行であることを確認する方法はありません。

テーブルからすべてのレコードを削除する場合は、

TRUNCATE TABLE table1

したがって、実際に実行している場合は、次SELECT * FROM table1のようにコーディングします。

$result = mysql_query("SELECT * FROM table1");
$row = mysql_fetch_row($result);

while($row = mysql_fetch_array($result))
{ 
    //Do some process

}
mysql_query("TRUNCATE TABLE table1");

(もちろん、関数は使用しませんmysql_*が、MySQLi または PDO を使用します)

于 2013-04-29T11:51:06.490 に答える
1

新しいコードで mysql_* 関数を使用しないでください。それらはもはや維持されておらず、非推奨プロセスが開始されています。赤いボックスが見えますか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。

次の MySQLI コードを使用できます。

$query = "SELECT * FROM tablename";
$result= $mysqli -> query($query);

while($row = $result -> fetch_object()){

      $row_identifier = $row -> column_with_unique_id;

      // Do the processing bit here.

      // Now Delete
      $del_query = "DELETE FROM tablename WHERE column_with_unique_id = ".$row_identifier;
      $del_result= $mysqli -> query($del_query);

}
于 2013-04-29T11:51:56.897 に答える
-1

コードから、テーブルからすべてのエントリを削除したいようです。(それはあなたのコード/疑似コードが行うことだからです。) 次の方法を使用すると、はるかに簡単に行うことができます。

 DELETE FROM table

そして、mysql_*もう関数を使用しないでください。それらは非推奨としてマークされており、最終的に PHP から削除されます。代わりにMySQLiまたはPDOを使用してください。

于 2013-04-29T11:51:09.553 に答える