我有以下代码
<?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代替。