2

我是 PHP 新手,只想制作一个基本页面,我可以在其中查看数据库中的所有用户并删除它们。我已经走了这么远,但它一直告诉我我有一个我有和未定义的索引:user_id,虽然它告诉我它已经删除了它没有删除任何内容的字段。这是我的代码:

<?php include_once "includes/scripts.php"; ?>
<?php include_once "includes/connect.php";?>
<?php include_once "includes/cms_page_security.php";?>
<div id="cms_container"><br>
    <br>
    <h1>MANAGE USERS<img src="images/three_column_grid_line.png" alt="line"></h1>
    <p class="logout_btn"><a href="admin_cms.php">Back</a></p>
<?php
$tbl="users"; // Table name 
$sql = "SELECT * FROM $tbl";
$result = mysql_query($sql, $connect);
while($rows = mysql_fetch_array($result)){
?>
<?php
echo $rows['user_id'];
echo $rows['user_name'];
echo $rows['user_password'];  
?> 
<a href="delete_user.php?id= <? echo $rows['user_id']; ?>">delete</a>
<?php
}
?>
<?php
mysql_close();
?>
</div><!--cms_container-->
</body>
</html>

它应该链接到的页面会删除查询:

<?php include_once "includes/connect.php";?>
<?php
    $tbl="users"; 
    $user_id= $_GET ['user_id'];
    $sql="DELETE FROM $tbl WHERE user_id = '$user_id'";
    $result = mysql_query($sql, $connect);
    if($result){
        echo "Deleted Successfully";
        echo "<BR>";
        echo "<a href='delete.php'>Back to main page</a>";
    }else {
        echo "ERROR";
    }
    ?> 
<?php
mysql_close();
?>
4

5 回答 5

3

在 delete_user.php 你必须得到 user_id

$user_id= $_GET ['id'];

因为在您的<a href="delete_user.php?id= <? echo $rows['user_id']; ?>">delete</a>链接 GET 变量中是“id”,而不是“user_id”

于 2013-10-13T18:48:40.790 回答
2

您确实应该改用 PDO。问题在于您传递的信息。

链接:<a href="delete_user.php?id= <? echo $rows['user_id']; ?>">delete</a> 正在寻找“id”,但您稍后会寻找“user_id”

如果将其更改为<a href="delete_user.php?user_id=<? echo $rows['user_id']; ?>">delete</a>,它应该可以工作。

我仍然强烈建议您改用 PDO,它更安全且更易于使用。

PDO 删除示例

 public function deleteUser($username, $user_id){

    if($this->isAdmin($username) == true){

        $query = $this->db->prepare('DELETE FROM users WHERE user_id = ?');
        $query->bindValue(1, $user_id);

        try{
            $query->execute();
        }catch(PDOException $e){
            die($e->getMessage());
        }
    }else{
        return false;
    }
}

我正在运行额外检查以确保请求删除的人是管理员成员,但您应该能够看到结构

于 2013-10-13T18:45:51.313 回答
1

除了其他答案:

如果未启用 php 短标签,则此行可能是致命错误:

<a href="delete_user.php?id= <? echo $rows['user_id']; ?>">delete</a>

php手册说:

*PHP 还允许使用短标签<??> (不鼓励使用,因为它们仅在使用 short_open_tag php.ini 配置文件指令启用,或者 PHP 配置了 --enable-short-tags 选项时才可用。* http://php .net/manual/en/language.basic-syntax.phptags.php

于 2013-10-13T20:44:52.120 回答
0

即使更改零行,SQL 查询也会成功。当您生成 HTML ( id= <?) 时,您在用户 ID 前加上一个空格,因此您不会匹配任何行(因为"1"不会被 匹配" 1")。

于 2013-10-13T18:43:49.800 回答
0

您在哪里创建“删除”链接

<a href="delete_user.php?id= <? echo $rows['user_id']; ?>">delete</a>

您正在创建一个“id”变量,但稍后您会查找“user_id”。

将您的链接更改为

<a href="delete_user.php?user_id=<? echo $rows['user_id']; ?>">delete</a>
于 2013-10-13T18:43:58.333 回答