从 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 中不执行任何操作的主要内容,如果未能解决你的问题,请参考以下文章

在删除和运行更新统计信息时遇到死锁

卸载xampp后如何在phpmyadmin中恢复数据库

phpmyadmin 导出 CSV 到 excel 删除数据

由于删除根数据库,无法访问 PHPmyadmin

为啥在 phpmyadmin 中导入的数据库更小?

无法删除索引或重命名表 PHPmyadmin