如何删除一个特定的行,没有任何Where条件,在mysql


How to delete a particular row,with out any Where condition, in mysql

我有以下代码

<?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循环中的每一行。

是可能的吗?这个表没有主键

不能,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)

请不要在新代码中使用mysql_*函数。它们不再被维护,弃用过程已经开始。看到那个红框了吗?学习准备语句,并使用PDO或MySQLi -本文将帮助您决定使用哪一个。

你可以使用下面的mysql代码:

$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);
}

从代码中看起来,您希望从表中删除所有条目。(因为这就是你的代码/伪代码的作用。)使用:

可以更容易地做到这一点
 DELETE FROM table

请不要再使用mysql_*函数。它们被标记为已弃用,最终将从PHP中删除。使用MySQLi或PDO代替。