我编写了几页来删除数据库中的记录,但它似乎无法正常工作。
我有一个网站,用户使用存储在数据库中的正确名称和密码登录,这很好。
然后将用户带到管理页面,代码由以下部分组成:
<?php
$sql = mysqli_query($con, "SELECT * FROM details INNER JOIN genre ON genre.genreID = details.genreID;") or die(mysqli_error($sql));
while($row = mysqli_fetch_array($sql)) {
echo '<div class="info-box">
<img class="image" src='.'"'.$row['image'].'"
'.'>
<a class="edit" href="delete.php?id=' . $row["ID"] .'" onclick="return confirm(\'Are you sure you want to delete this record?\')">Delete</a> |
</div>';
}
mysqli_close($con);
?>
我在管理页面上创建了一个JS小提琴,其中包含完整的代码...... http://jsfiddle.net/n3n4ot4g/
此页面将在幕后删除记录中的delete.php。此页面包含以下代码:
<?php
$myID = $_GET['ID'];
echo $myID;
include ('includes/dbconx.php');
//check if a value has been sent
if(isset($myID)){
//MySQL statement to delete record using the unique id variable
mysqli_query($con, "DELETE FROM details WHERE ID = '$myID'") or die ('Error: '.mysqli_error());
}
mysqli_close($con);
header("Location: admin.php");
?>
当我点击删除链接时,会出现弹出框以确认删除,我点击是,但是然后它将我带到admin.php,其中没有任何内容。所有记录都消失了。当我点击&#34;查看记录&#34;在左侧面板导航。我可以返回并再次登录并查看记录,但我试图删除的记录不会被删除。
我不确定这是HTML还是PHP问题。
我知道JS小提琴并非专为PHP设计,但我找不到替代方案。
答案 0 :(得分:0)
变化:
mysqli_query($con, "DELETE FROM details WHERE ID = '$myID'") or die ('Error: '.mysqli_error());
为:
mysqli_query($con, "DELETE FROM details WHERE ID = " . $myID) or die ('Error: '.mysqli_error());
通过将$myID
放在单引号中,您说它应该按原样使用,因此您的查询正在搜索字面上的ID&#34; $ myID&#34;这当然不会找到。
或者,您可以删除单引号而不连接$myID
变量,确保查询本身仍包含在双引号中。这意味着将正确处理变量并使用它的值。
mysqli_query($con, "DELETE FROM details WHERE ID = $myID") or die ('Error: '.mysqli_error());