Php 如何在mysql中删除特定的行,而不带任何Where条件

Php 如何在mysql中删除特定的行,而不带任何Where条件,php,mysql,Php,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 }

我有以下代码

<?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 
        }

您不能,MySQL将不知道要删除哪个记录

您要么使用主键,要么添加所有字段并添加一个
限制
,即使这样,您也无法确定它是该行

如果要删除表中的所有记录,请使用

TRUNCATE TABLE table1
因此,如果您实际上正在执行表1中的SELECT*,我会将其编码为:

$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将不知道要删除哪个记录

您要么使用主键,要么添加所有字段并添加一个
限制
,即使这样,您也无法确定它是该行

如果要删除表中的所有记录,请使用

TRUNCATE TABLE table1
因此,如果您实际上正在执行表1中的SELECT*,我会将其编码为:

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

从代码中,您似乎希望删除表中的所有条目。(因为这就是您的代码/伪代码所做的。)您可以使用以下工具轻松地做到这一点:

 DELETE FROM table

请不要再使用
mysql.*
函数。它们被标记为已弃用,最终将从PHP中删除。使用或。从代码中,您似乎希望删除表中的所有条目。(因为这就是您的代码/伪代码所做的。)您可以使用以下工具轻松地做到这一点:

 DELETE FROM table
请不要再使用
mysql.*
函数。它们被标记为已弃用,最终将从PHP中删除。使用或代替

它们不再得到维护,并且已经开始使用。看到了吗?相反,学习,并使用或-这将帮助你决定哪一个

您可以使用以下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);

}
它们不再得到维护,并且已经开始使用。看到了吗?相反,学习,并使用或-这将帮助你决定哪一个

您可以使用以下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);

}

为什么不直接从表中删除?如果需要删除每一行,为什么不进行简单的
DELETE FROM table
?您需要某种键或引用来删除所需的行,除非您想删除整个数据集。这是个不错的问题,upvoting to offset。@Passenger他也想先处理记录。为什么不直接从表中删除?如果需要删除每一行,为什么不进行一次简单的
DELETE FROM table
?您需要某种键或引用来删除所需的行,除非您想删除整个数据集。这是个不错的问题,upvoting to offset。@Passenger他也想先处理记录。使用
TRUNCATE TABLE时速度更快
使用
TRUNCATE TABLE时速度更快