php删除行按钮

时间:2015-06-29 12:48:54

标签: php mysql row

它似乎没有起作用; 这是我的删除:

<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时,它会显示回声,但它实际上并没有从表中删除用户?

4 个答案:

答案 0 :(得分:1)

$username周围添加引号并清理输入:

mysql_query ("DELETE FROM users
        WHERE username = '".mysql_real_escape_string($username)."'");
        echo 'succesfully deleted user';
顺便说一句,在这个阶段,您应该忘记mysql_个函数并切换到PDOmysqli准备好的语句。否则,您的代码将变得易受攻击并且过时。

答案 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