删除查询返回值,即使数据库中没有记录也是如此

时间:2015-08-17 14:08:38

标签: php mysql

<?php
            include "conn.php";
            include "session.php";
            $name_enterd=$_GET['Name'];
            $sql = "DELETE FROM myDB.Mynew WHERE firstname='$name_enterd' OR lastname='$name_enterd'";
            echo "<br>";
            $result=$conn->query($sql);
            if($result==1)
            {
                echo "<br> Data deleted successfully";
            }
            else
            {
                echo "No Data Found<br>";
            }
        ?>

当我第一次运行此代码时,它通过删除数据正常工作。但是,当我再次运行它时,它仍然给我相同的答案“数据已成功删除”,即使没有该值存在的数据。 即$ result仍然获得value1。

4 个答案:

答案 0 :(得分:1)

您的代码应该更像这样:

<?php
        include "conn.php";
        include "session.php";
        $name_enterd=$_GET['Name'];
        $sql = "DELETE FROM myDB.Mynew WHERE firstname='$name_enterd' OR lastname='$name_enterd'";
        echo "<br>";
        $result=$conn->query($sql);
        if($result->rowCount() > 0)
        {
            echo "<br> Data deleted successfully";
        }
        else
        {
            echo "No Data Found<br>";
        }
    ?>

指定rowCount只会为您提供受查询影响的行数

答案 1 :(得分:0)

即使查询只影响0行,它仍然成功完成,所以你希望$ result为1.

答案 2 :(得分:0)

您获得了正确的输出。在执行该查询时,您要求数据库检查是否存在具有该名字或姓氏的数据并将其删除。即使没有与之匹配的数据,查询仍然可以成功运行。

您需要使用

$result->rowCount() == 1

而不是

$result == 1

这真的取决于你想要使用的结果。如果您只想告诉用户它已被删除,使用您所拥有的就可以了。但是,如果您想让用户知道是否实际删除了任何内容,您需要使用我上面的建议或其他方法来确定是否属于这种情况。

答案 3 :(得分:0)

实际上您可能在此代码中使用mysqli,因此您可以尝试使用affected_rows代替rowCount: 见http://php.net/manual/en/mysqli.affected-rows.php

什么是

$result->affected_rows

给你?