使用_GET url链接从mysql数据库中删除记录

时间:2012-03-07 02:34:58

标签: php mysql html get pdo

修改

感谢您的帮助。我编辑了我的帖子以反映下面建议的更改。我正在使用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查询。任何进一步的建议都非常感谢。

3 个答案:

答案 0 :(得分: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->customer_id(假设它存在)或其他一些知道用户ID的方法。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

假设$ id [$ row-&gt; customer_id]有效。

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