【问题标题】:using _GET url link to delete a record from mysql database使用 _GET url 链接从 mysql 数据库中删除一条记录
【发布时间】:2012-03-24 14:25:37
【问题描述】:

编辑

感谢到目前为止的帮助。我已经编辑了我的帖子以反映下面建议的更改。我正在使用 PDO 进行数据库连接。我现在的代码如下:

HTML

<a href="includes/delete-customer.php?userID='.$row->customer_id.'">

PHP

    <?php

    //MySQL Database Connect
    include 'includes/config.php';

        // confirm that the 'id' variable has been set
        if (isset($_GET['userID']) && is_numeric($_GET['userID']))
        {
                // get the 'id' variable from the URL
                $id = $_GET['userID'];

                /* Delete row from the customer table */
                $id = $dbh->exec("DELETE FROM customer WHERE customer_id = '$id'");

                $stmt->execute();
        }
?>

config.php

<?php

/*** mysql hostname ***/
$hostname = 'localhost';

/*** mysql username ***/
$username = 'user';

/*** mysql password ***/
$password = 'password';

try {
    $dbh = new PDO("mysql:host=$hostname;dbname=testDB", $username, $password);
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>

我很确定 HTML 现在是正确的,问题在于 delete-customer.php 文件。我目前收到以下错误:致命错误:调用非对象上的成员函数 exec()

我不确定如何正确实现 PDO 查询。非常感谢任何进一步的建议。

【问题讨论】:

  • @Morgan 感谢您的回复。我刚刚用我认为可能是问题的内容更新了 html 链接,但它仍然没有从我的数据库中删除记录。非常感谢任何进一步的想法。
  • 请检查我在下面发布的答案。为什么要在查询字符串参数中添加文字 $id?

标签: php mysql html get pdo


【解决方案1】:

您的 HTML 部分显示:

<a href="includes/delete-customer.php?customer_id=$id['.$row->customer_id.']">

这是您的准确 HTML 语法吗?这个参数应该是实际的数字id,即--

<a href="includes/delete-customer.php?customer_id=3">

-- 通过回显$row-&gt;customer_id(假设它存在),或通过其他方式知道该用户 ID。

您的 HTML 只需要发送实际数据,而不需要任何类型的变量语法。您接收的 PHP ($_GET['customer_id']) 将为您解释并正确地将其传递给 MySQL。

【讨论】:

【解决方案2】:

您的 URL 将 userID 作为 get 参数传递,但在您的 php 脚本中您试图访问 customer_id。尝试更改您的代码以检索userID,它应该可以工作

if (isset($_GET['userID']) && is_numeric($_GET['userID']))

【讨论】:

  • 谢谢@Christian 我已经按照上面的建议修复了我的 HTML 和 PHP,但是我的 PHP 致命错误出现以下错误:调用成员函数 prepare()...line 13
  • 您的数据库连接是如何建立的?贴一些数据库连接的代码
【解决方案3】:
<a href="includes/delete-customer.php?customer_id=<?php echo $id[$row->customer_id]; ?>">

假设 $id[$row->customer_id] 是有效的。

另外,你真的不应该在 get var 上从数据库中删除,除非你正在做一些管理员验证/访问规则,并保证你没有任何人会在工作中流氓并在那里手动输入数字..这简直太疯狂了。

【讨论】:

  • 在看到@Kai Qing 允许 $_GET 请求删除记录的警告之前,我很惊讶我浏览了多少答案。我找不到这个故事的链接,但是有一篇大文章说有人的整个数据库被一个表现良好的机器人破坏了。不要这样做!
  • @TecBrat 感谢您的反馈,您能否提供一个链接,指向使用直接链接从我的数据库中删除记录的最佳做法?非常感谢。
猜你喜欢
  • 2019-09-05
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多