我有一张注册用户的表。我的代码假设在单击表中的删除时删除一行。 这是在database.php
中storage_path('app/uploads/test.mp4')
所以,我在点击删除时获得了id。到目前为止,这部分工作,但当我尝试运行删除查询时,它不起作用。 delete.php
.....
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
echo '<tr><td align="left">' . $row['Id'] . '</td><td align="left"><a href="delete.php?id=' . $row['Id'] . '">Delete</a></td></tr>';
}
......
我刚刚得到&#34;错误&#34;并且它不会删除该行。我该如何解决?
编辑:
<?php
session_start();
include 'connection.php';
if (isset($_POST['Id']) && is_numeric($_POST['Id'])){
$id = mysqli_real_escape_string($conn, $_POST['Id']);
$result = mysqli_query("DELETE FROM table_name WHERE Id= '$id' ")
or die(mysqli_error());
echo "<h3><br><br><a href=database.php> <b> Go Back</a></h3>";
echo "Data Deleted";
}else {
echo "Error";
echo "<h3><br><br><a href=database.php> <b> Go Back</a></h3>";
}
?>
仍然得到相同的结果,删除查询不起作用。 还&#34; Id&#34; name的设置方式与数据库中的相同。
答案 0 :(得分:0)
$_POST['Id']
未设置,因为您通过链接获得了该脚本。
<a href="AdminDelete.php?id=' . $row['Id'] . '">Delete</a>
链接是GET请求,而不是POST请求。因此,$_GET['id']
(请注意,$_GET['id']
而不是$_GET['Id']
,因为您在链接中使用了id
),但应设置it's not really safe to use a link to delete things to begin with。
有多种方法可以解决这个问题。一种方法是让表格中的删除链接指向一个发布到实际删除脚本的中间确认页面。
答案 1 :(得分:0)
它不起作用,因为你发送一个get参数并检查post并注意上面的注释准备语句,并且尽量不使用get来删除数据,因为程序员可以轻松更改id并删除另一个用户信息使用发布,因为它不能被调整,这就是为什么社交使用让我称之为ajax删除,因为删除无法检索,除非你创建一个替代,所以使用POST METHOD而不是更改此
if (isset($_POST['id']) && is_numeric($_POST['id'])){
$id = mysqli_real_escape_string($conn, $_POST['id']);
到这个
if (isset($_GET['id']) && is_numeric($_GET['id'])){
$id = mysqli_real_escape_string($conn, $_GET['id']);
这应该有效