Php 从数据库中删除用户
我一直在尝试(对PHP来说非常陌生)通过HTML页面从我的数据库中删除一个用户。以下是我所拥有的: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="
<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.";
}