Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示和删除数据库中的数据_Php_Mysql - Fatal编程技术网

Php 显示和删除数据库中的数据

Php 显示和删除数据库中的数据,php,mysql,Php,Mysql,我是PHP新手,只想创建一个基本页面,在这里我可以看到数据库中的所有用户并将其删除。我已经走了这么远,但它一直告诉我,我有一个我有且未定义的索引:user_id,尽管它告诉我它已经删除了字段,但它没有删除任何内容。这是我的密码: <?php include_once "includes/scripts.php"; ?> <?php include_once "includes/connect.php";?> <?php include_once "includes/

我是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();
?>


SQL查询将成功,即使它更改了零行。在生成HTML(
id=创建“删除”链接的地方)时,您在用户id前面加了一个空格

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

您正在创建一个“id”变量,但稍后会查找“user\u id”

将您的链接更改为

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

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

链接:
正在查找“id”,但您稍后会查找“用户id”

如果您将其更改为
,它应该可以工作

我仍然强烈建议您研究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;
    }
}

我正在运行一个额外的检查,以确保请求删除的人是管理员成员,但您应该能够在delete_user.php中看到结构,您必须获得用户id

$user_id= $_GET ['id'];

因为在您的
链接中,GET变量是“id”,而不是“user\u id”

以及其他答案:

如果未启用php短标记,这一行可能是致命错误:

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

php手册上说:

*PHP还允许使用短标记
(不鼓励使用这些选项,因为它们仅在启用时可用。) short_open_tag php.ini配置文件指令,或者如果配置了php 使用--enable short tags选项。*

危险:你正在使用并且应该使用。你也容易受到现代API会让你更容易从中获得的影响。在你的
delete.php
@Quentin中,
$connect
在哪里?我只是好奇,你有一些危险模板吗?只有一个。W3学校有很多问题需要解决。比如生吃
$\u GET
参数,如果你需要的话不要正确地逃避它,否则很容易受到sql注入的攻击