【发布时间】:2017-03-20 23:05:18
【问题描述】:
我有一张注册用户的桌子。我的代码假设在单击表中的删除时删除一行。 这是在database.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>';
}
......
所以,我在单击删除时得到了 id。到目前为止,这部分有效,但是当我尝试运行删除查询时它不起作用。 删除.php
<?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>";
}
?>
我只是得到“错误”并且它没有删除该行。我该如何解决?
编辑:
<?php
session_start();
include 'connection.php';
if (isset($_GET['Id']) && is_numeric($_GET['Id']))
{
$id = mysqli_real_escape_string($conn, $_GET['Id']);
$result = mysqli_query("DELETE FROM User_reg WHERE Id= '$id' ")
or die(mysqli_error());
echo "<h3><br><br><a href=AdminLog.php> <b> Go Back</a></h3>";
echo "Data Deleted";
}else {
echo "Error";
echo "<h3><br><br><a href=AdminLog.php> <b> Go Back</a></h3>";
}
?>
删除查询不起作用时仍然得到相同的结果。 此外,“Id”名称的设置方式与数据库中的设置方式相同。
【问题讨论】:
-
id区分大小写 -
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到查询中。 请勿使用手动转义和字符串插值或连接来完成此操作,因为您将创建严重的SQL injection bugs。意外未转义的数据是一种严重的风险。 -
这个问题有太多的额外编辑
-
已经说过
id区分大小写。?id和$_GET['Id']不匹配。 -
@– Fred -ii- 我已经解决了。但现在我得到一个空页面而不是回显消息。
标签: php mysql mysqli sql-delete