从 PHPMyAdmin 中删除数据时,DELETE 链接在 PHP 中不执行任何操作
Posted
技术标签:
【中文标题】从 PHPMyAdmin 中删除数据时,DELETE 链接在 PHP 中不执行任何操作【英文标题】:DELETE link does nothing in PHP when removing data from PHPMyAdmin 【发布时间】:2017-04-15 04:00:31 【问题描述】:我在 phpMyAdmin 中创建了一个表,并通过 localhost 连接到它。我的 PHP 代码在表格中显示数据。
我希望能够删除某一行,所以我创建了一个 html/php 链接来删除表中的行。
我的问题是,每当我按下删除时,页面只是刷新而没有错误,但记录仍然存在。
我的代码中是否缺少某些内容?
<?php
// Connect to the database
$username="root";$password="test";$database="products";
// Connect to the mysql server and select the required database
$connection = new mysqli("localhost",$username,$password, $database);
$sql = "";
$sql = "SELECT * FROM products";
$ID = isset($row['ID']) ? $row['ID'] : '';
$query = mysqli_query($connection, "DELETE FROM products WHERE ID=$ID");
$result = $connection->query($sql);
if ($result->num_rows > 0)
while ($row = $result->fetch_assoc())
echo "<tr>\n";
echo "<td>" . $row['Name'] . "</td>\n";
echo "<td>" . $row['Description'] . "</td>\n";
echo "<td>" . $row['Price'] . "</td>\n";
echo "<td>" . $row['Cost_Price'] . "</td>\n";
echo "<td>" . $row['Stock'] . "</td>\n";
echo "<td>" . $row['EAN'] . "</td>\n";
?>
<td><a href="?mode=delete&ID=<?php echo $row["ID"]; ?>"
title="Delete <?php echo $row["ID"]; ?>">Delete</a></td>
<?php
echo "</tr>\n";
$stmt = $connection->prepare('SELECT * FROM products WHERE name = ?');
$stmt->bind_param('s', $name);
$stmt->execute();
$result = $stmt->get_result();
$connection->close();
?>
【问题讨论】:
你最终能更正你的代码吗?这是不可理解的:$ID = isset($row['ID']) ? $row['ID'] : ''; $query = mysqli_query($connection, "DELETE FROM products WHERE ID=$ID");
为什么 $query 部分在花括号内?
与您的问题无关。但是您不应该使用GET
请求(常规链接)来触发修改/删除数据的操作。因为浏览器可能会预选链接。
输入你的完整代码
【参考方案1】:
改变
$ID = isset($row['ID']) ? $row['ID'] : '';
$query = mysqli_query($connection, "DELETE FROM products WHERE ID=$ID");
收件人
if(isset($_GET['ID']) && ($_GET['mode'] == 'delete'))
$ID = $_GET['ID'];
$query = mysqli_query($connection, "DELETE FROM products WHERE ID=$ID");
解释
点击删除链接后,到了这一行
$ID = isset($row['ID']) ? $row['ID'] : '';
.
这里没有设置$row['ID']
。因此,$ID
设置为 ""
,正如您在代码中声明的那样。因此,DELETE 语句无法找到您要删除的产品。
实际上,在删除链接中。您正在传递 2 个变量。一个是mode
,另一个是产品的ID
。正如我在回答中提到的那样,通过 $_GET 捕获这两个变量。
快速链接
-
How to set $_GET variable
$_GET : PHP Manual
【讨论】:
如果这个答案对你有帮助,@NicholasNicolaou。然后,请将此答案标记为正确答案。因为,它将帮助其他用户轻松找到它。以上是关于从 PHPMyAdmin 中删除数据时,DELETE 链接在 PHP 中不执行任何操作的主要内容,如果未能解决你的问题,请参考以下文章