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 不知道要删除哪条记录。

您要么使用主键,要么添加所有字段并添加 a 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_* 函数。它们不再被维护,并且已经开始弃用过程。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。

您可以使用以下 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 中删除。请改用MySQLiPDO

于 2013-04-29T11:51:09.553 回答