PHP MySQL从数据库中删除数据

3

大家好,我在php中的小删除函数中遇到了一点问题,以下是我的代码

function delete()
    {
    $q = "DELETE FROM example WHERE **author='frank'";**

    $r = mysql_query($q) or die (mysql_error());
    if($r)
    {
        echo 'done';
    }
    else
    {
        echo 'not done';
    }
    }

现在我没有任何名为Frank的作者,这意味着它没有从数据库中删除任何内容,但仍然显示已完成的消息。

我不确定为什么????有人能帮帮我吗?


需要更多信息。你的示例表包含什么数据?作者列是什么数据类型? - Pekka
mysql_query()函数在查询成功时返回一个STATEMENT HANDLE,如果出现错误则返回FALSE。即使是一个什么也不做的查询也被认为是一个成功的查询,所以除非您的查询存在语法错误或其他数据库错误,否则您总是会得到这个句柄。 - Marc B
3个回答

5

这是因为没有错误,删除操作确实执行了,只是它没有做任何事情。你需要:

if(mysql_affected_rows() > 0) {
  echo "done";
}

1

你的查询没有错误,它将成功完成。如果你阅读文档,你会看到:

"对于其他类型的 SQL 语句,如 INSERT、UPDATE、DELETE、DROP 等,mysql_query() 在成功时返回 TRUE,在出错时返回 FALSE。"

由于查询中没有错误,即使实际上没有删除任何内容,它也会返回TRUE。删除没有任何内容不被视为错误。


0

删除查询总是成功的,即使实际上没有删除任何行。如果您想确定插入、更新或删除操作影响了多少行,请使用mysql_affected_rows()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接