我有一个要删除记录的表test
。我正在使用删除查询,但没有效果。我尝试在phpmyadmin
的“ SQL”选项卡中运行它,并在那里工作。但是,在php
代码中,它不起作用。这是HTML
代码
<form action="home.php" method="post">
<button class="button button3" type="button" onclick="return
toggleMe('del_tst')">Delete Test</button><br>
<div id="del_tst" style="display:none">
<input type="date" class="textstyle" name="tst_date" method="post"
placeholder="Enter test date" />
<button type="submit" class="subbutton button1" value="Delete"
method="post"
name="del_tst">Delete</button><br/>
</div>
</form>
这是PHP代码
if(isset($_POST['del_tst'])){
$tst_date= date('d-m-Y', strtotime( $_POST['tst_date'] ));
try{
$stmt_tst=$conn->prepare("DELETE FROM `test` WHERE `date`=:tst_date");
$stmt_tst->bindparam(":tst_date",$tst_date);
$result=$stmt->execute();
if($result===TRUE)
{
if(($stmt->rowCount())>0)
{
echo "<font color='white'> <i>record Deleted successfully!</i></font>";
}
else{
echo "<font color='white'> <i>No such record exists!</i></font>";
}
}
else{
echo "Something Went Wrong!";
}
return true;
}
catch(PDOException $e)
{
echo $e->getMessage();
return false;
}
}
我正在尝试在date
条件下使用WHERE
删除记录,但是不起作用。
这是数据库的屏幕截图
请和我一起解决这个问题。
答案 0 :(得分:1)
这部分不正确:
$stmt_tst=$conn->prepare("DELETE FROM `test` WHERE `date`='.$tst_date.'");
$stmt_tst->bindparam(":tst_date",$tst_date);
$result=$stmt->execute();
您应该将其更改为:
$stmt_tst=$conn->prepare("DELETE FROM `test` WHERE `date`=:tst_date");
$stmt_tst->bindparam(":tst_date",$tst_date);
$result=$stmt->execute();
在documentation中查看更多信息。
此外,如果date
是MySQL DATE
列,则应使用ISO8601日期(以年为单位):
$tst_date= date('Y-m-d', strtotime( $_POST['tst_date'] ));
答案 1 :(得分:0)
我不确定,但是我会尝试将您的查询更改为:
("DELETE FROM `test` WHERE `date`= '".$tst_date."'");
请注意$ tst_date左右的多余双引号
答案 2 :(得分:0)
您应该修复表格:
<form name="myForm" action="home.php" method="post">
<input type="date" class="textstyle" name="tst_date" placeholder="Enter test date" />
<input type="submit" class="subbutton button1" value="Delete" name="del_tst">Delete</button><br/>
</form>
尝试使用此简易版本,该版本应将值发布到PHP页面。然后使用您的浏览器检查工具查看其发布是否正确
这与@bart的答案一起使用