它似乎没有起作用; 这是我的删除:
<code><?php
$username = $_GET["username"];
include 'config.php';
mysql_query ("DELETE FROM users
WHERE username = ".$username);
echo 'succesfully deleted user';
//header("Location: panel.php");
?></code>
这是我的行文件
<code><?php
$query = 'SELECT * FROM users';
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
echo ' <tr> ';
echo ' <td> ';
echo $row['username'];
echo ' <td> ';
echo $row['time'];
echo ' <td> ';
echo $row['amount'];
echo ' <td> ';
echo $row['price'];
echo '<form action="/delete_user.php" method="POST">';
echo '<td>';
echo '<input type="submit" name="'.$row['username'].'" value="delete"/>';
echo '</form>';
}
?></code>
当我转到delete_user.php?username=test
时,它会显示回声,但它实际上并没有从表中删除用户?
答案 0 :(得分:1)
在$username
周围添加引号并清理输入:
mysql_query ("DELETE FROM users
WHERE username = '".mysql_real_escape_string($username)."'");
echo 'succesfully deleted user';
顺便说一句,在这个阶段,您应该忘记mysql_
个函数并切换到PDO
或mysqli
准备好的语句。否则,您的代码将变得易受攻击并且过时。
答案 1 :(得分:1)
可能是因为您没有将用户名放在引号中:
$query = sprintf("DELETE FROM users WHERE username = '%s';", $username);
mysql_query($query);
echo 'succesfully deleted user';
但是,这对SQL注入是开放的,因为可以提交包含引用和操作数据库的用户名。为了安全起见,最好在使用它操作数据库之前转义数据:
$escapedUsername = mysql_real_escape_string($username);
$query = sprintf("DELETE FROM users WHERE username = '%s';", $escapedUsername);
mysql_query($query);
echo 'succesfully deleted user';
这样可以保护自己免受SQL攻击。请注意,mysql_ *函数已被弃用(很快就会完全删除),因此可能会研究mysqli_或PDO方法,以便将来进行数据库通信。
古德勒克。
答案 2 :(得分:0)
您未能在代码中引用$username
变量。要成功执行查询,您必须引用$username
变量
mysql_query ("DELETE FROM users WHERE username = '".$username. "'");
答案 3 :(得分:0)
<?php
if (isset($_POST["username"])){
$username = mysql_real_escape_string($_POST["username"]);
include 'config.php';
if(mysql_query ("DELETE FROM users WHERE username = '{$username}'"))
echo 'successfully deleted user';
else
echo 'query error: '.mysql_error();
}
?>
P.S。您的代码易受SQL注入攻击(在Google上搜索它)。此外,不推荐使用mysql_query()并将其删除。 http://php.net/manual/en/function.mysql-query.php