<?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。
答案 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
给你?