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

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

问题描述:

编辑使用_GET URL链接从mysql数据库中删除记录

感谢您的帮助迄今。我编辑了我的帖子以反映下面提出的更改。我正在使用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(); 
    } 
?> 

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

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

+0

@Morgan谢谢你的回复。我刚刚更新了我认为可能是问题的html链接,但它仍然没有从我的数据库中删除记录。任何进一步的想法都非常感谢。 – 2012-03-07 02:45:41

+0

请检查我在下面发布的答案。你为什么要在你的querystring参数中添加一个文字$ id? – Morgon 2012-03-07 02:54:02

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。

+0

我已修正了HTML部分以阅读以下内容: 2012-03-07 03:20:27

+0

'调用成员函数prepare()对非对象'?您可能需要编辑您的问题并分享'includes/config.php'的内容 - 看起来像'$ mysqli'没有按照我们预期的方式进行初始化。 – Morgon 2012-03-07 03:27:37

你的URL通过userID作为get参数,但在你的php脚本中,你试图访问customer_id。试着改变你的代码来检索userID,它应该工作

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

谢谢@Christian我已经修复了我的HTML和PHP符合上述建议,但我得到以下错误与我的PHP致命错误:调用成员函数prepare()...第13行 – 2012-03-07 03:24:31

+0

你的数据库连接如何被制造?发布数据库连接的一些代码 – 2012-03-07 03:28:11

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

假设$ ID [$按行> CUSTOMER_ID]是有效的。

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

+0

我很惊讶在看到@Kai Qing的允许$ _GET请求删除记录的警告之前,我浏览了多少个答案。我找不到这个故事的链接,但是有一篇关于整个数据库被一个其他行为良好的机器人销毁的文章。不要这样做! – TecBrat 2012-03-07 03:38:37

+0

@TecBrat感谢您的反馈,您能否提供一个链接,指向使用直接链接从我的数据库中删除记录的最佳做法?非常感谢。 – 2012-03-07 15:07:17