单击时删除mysql行

时间:2013-10-19 23:26:00

标签: php mysql post sql-delete

这是链接样式

<a href='del-user.php?id={$row['username']}'>Delete</a>

{$ row ['username']}将从Admin-CMS用户表中获取用户名字段

现在......点击它时,您将看到以下内容:

del-user.php?id=billy

现在我的尝试是什么

我想阅读链接并删除用户名为billy的行

这是我的del-user.php文件

<?php
  if($_GET['id'] != ""){
    $userID = $_GET['id'];
    $sql = "DELETE FROM users WHERE username='".$userID."'";
    $query  = mysql_query($sql);
  }
?>

我做错了什么? 顺便说一句,我的数据库设置是

TABLE   is called :     users
COLUMN  is called :     username

2 个答案:

答案 0 :(得分:0)

首先,ESCAPE YOUR DATA。或使用准备好的陈述。您的代码易受SQL注入攻击。

其次,不要使用mysql库。它们是折旧的。您需要改为使用mysqli

第三,你的连接指针在哪里?您需要在某处创建一个并将其传递给查询函数。

$con = mysqli_connect(...);
$result = mysqli_query($con, $sql);

答案 1 :(得分:0)

我刚刚在服务器上运行了测试,虽然我必须编辑才能在我的环境中运行,并且运行正常。

我使用的整个文件是:

<?php
include_once('pre_load.php');
login_required();
$auth = Authentication::instance();
$db   = CDatabase::instance();

if(array_key_exists('id', $_GET) && !in_array($_GET['id'], array(0, ""))
{
    $userID = (is_string($_GET['id']) && ctype_digit($_GET['id'])) ? $_GET['id'] : FALSE ;
    if ($userID)
    {
        $sql    = "DELETE FROM `bans` WHERE `id` ='".$userID."'";
        $query  = $db->execute($sql);
        echo '<p>Row Deleted</p>';
    }
    else
    {
        echo '<p>Invalid ID</p>';
    }
}
?>

这一切都正确运行,这引出了我这个问题:

那是你的整个档案吗?如果是这样,您如何连接到数据库以启动删除?

代码本身看起来是正确的,我看到没有错误,但是您将其作为文件发布的事实,询问是否包含数据库连接。

在该文件中包含数据库连接,如果不存在,则问题将结束。

如果数据库连接实际上是在文件中,请在此处发布,我将对其他问题进行解决。