Php 从数据库中删除用户

Php 从数据库中删除用户,php,mysql,Php,Mysql,我一直在尝试(对PHP来说非常陌生)通过HTML页面从我的数据库中删除一个用户。以下是我所拥有的: <form name="my_form" method="post" action="delete_user.php"> User Name: <input type="text" name="username_delete" placeholder="username"><br /> <input type="submit" name="

我一直在尝试(对PHP来说非常陌生)通过HTML页面从我的数据库中删除一个用户。以下是我所拥有的:

<form name="my_form" method="post" action="delete_user.php">
    User Name: <input type="text" name="username_delete" placeholder="username"><br />
    <input type="submit" name="btn_delete" value="Delete User" />
</form>
HTML保持不变。

完整代码修复:

<?php
error_reporting(E_ALL); // Remove this line before putting live!
session_start();
include_once 'dbconnect.php';

if(isset($_POST['btn_delete']){
    $username = $_POST['username_delete'];
    $sql = mysql_query("DELETE FROM users WHERE username='$username'");

    if($sql){
        echo "Deleted";
    }
}
?>

您的
删除
语法错误删除(*)

使用
从id=id的表中删除

<?php
session_start();
include_once 'dbconnect.php';

if(isset($_POST['btn_delete']){
$username = $_POST['username_delete'];
$sql = mysql_query("DELETE FROM users WHERE user_id='$username'");

if($sql){
    echo "Deleted";
}else{
  header('location:index.php');
}
}
?>

您的查询使用了不正确的语法,并且查询了错误的列

DELETE FROM users WHERE username = ?
您也对SQL注入非常开放。以上是一个示例或准备好的查询

如果需要使用不推荐使用的
mysql\uuz
函数,请尝试

session_start();
include_once 'dbconnect.php';
if(isset($_POST['btn_delete']){
     $username = mysql_real_escape_string($_POST['username_delete']);
     $sql = mysql_query("DELETE FROM users WHERE username ='$username'");
     if($sql){
         echo "Deleted";
     }
}
另外,您对
$username
的分配不正确,可以使用
[]
{}
访问,而不是
()

方括号和大括号都可以互换使用来访问数组元素(例如,$array[42]和$array{42}在上面的示例中都可以做同样的事情)

所以

需要

$username = $_POST['username_delete'];


作为我前面答案的扩展,下面是使用
PDO防止SQL注入的完整代码:

<?php

error_reporting(E_ALL); // Remove this line before putting live!
session_start();

if(isset($_POST['btn_delete']){
    // Initialise PDO connection (May need to abstract connection to an include)
    $pdo = new PDO('mysql:host=localhost;dbname=mydb', 'username', 'password');

    $statement = $pdo->prepare("DELETE FROM users WHERE username = ?");
    $username = $_POST['username_delete'];
    $statement->execute(array($username));

    echo "Deleted.";
}

使用此代码,您将面临可怕的SQL注入。用户id=用户名。应该是用户名。如图所示,我犯了一个错误。请注意,请参阅下面的答案。@Frank您的PHP可能配置为隐藏任何错误。请添加
错误报告(E\u ALL)作为
之后的第一行,因此此处的当前状态是…?尝试了此代码,但用户所在的行仍然存在?是否显示“已删除”一词?是否有任何错误显示?没有错误,而且“已删除”似乎无法确认。在我的答案中完全修复了您的代码,请尝试并给我反馈。仍然有效,没有错误:(?您可能希望将此作为主要答案(作为第一个选项-其中包含“更好”的实践)-然后作为第二个选项-附加您的另一个答案,因为它更接近OPs代码-因此即使不完全推荐,也可能有用。如果问题的答案有点不同(尽管是有效的答案),则添加多个答案是没有问题的,但在这种情况下-保留一个答案和两个选项是有意义的(它们非常相似)。很抱歉没有回复您,但即使有了这个答案,用户也无法删除,并且“delete_user.php”屏幕上没有显示任何输出…?如图所示:问题可能出在HTML中?
$username = $_POST['username_delete'];
$username = $_POST{'username_delete'};
<?php

error_reporting(E_ALL); // Remove this line before putting live!
session_start();

if(isset($_POST['btn_delete']){
    // Initialise PDO connection (May need to abstract connection to an include)
    $pdo = new PDO('mysql:host=localhost;dbname=mydb', 'username', 'password');

    $statement = $pdo->prepare("DELETE FROM users WHERE username = ?");
    $username = $_POST['username_delete'];
    $statement->execute(array($username));

    echo "Deleted.";
}