使用PHP和MySQL从表中删除

使用PHP和MySQL从表中删除,php,mysql,sql,Php,Mysql,Sql,似乎在尝试使用PHP/SQL查询从SQL表中删除tuble(用户名)时出错。我目前的代码如下: <html lang="en" > <body> <?php $conn = new mysqli('localhost', 'myUsername', 'myPassword', 'dbName') or die ('Cannot connect to db'); $uname=$_POST['uname']; $co

似乎在尝试使用PHP/SQL查询从SQL表中删除tuble(用户名)时出错。我目前的代码如下:

<html lang="en" >
<body>
<?php
        $conn = new mysqli('localhost', 'myUsername', 'myPassword', 'dbName') or die ('Cannot connect to db');

        $uname=$_POST['uname'];

        $conn->query("DELETE FROM Account WHERE username = $uname");

        echo '<script type="text/javascript">';
        echo 'alert("-ADMIN-\nRemoved user successfully!");';
        echo 'window.location.href = "admin.php";';
        echo '</script>';
?>
</body>
</html>


这个完全相同的代码用于从不同的表中删除网站上的帖子,但不是按用户名删除用户帐户。有什么想法吗?

检查此解决方案

<?php
$conn = new mysqli('localhost', 'myUsername', 'myPassword', 'dbName') or die ('Cannot connect to db'); 
 $stmt = $conn->prepare('DELETE FROM Account WHERE username = ?');
 $stmt->bind_param('s', $_POST['uname']); 
 $stmt->execute();

大概
$uname
是一个字符串,
username
列也是一个字符串,因此需要在字符串中引用变量

$conn->query("DELETE FROM Account WHERE username = '$uname'");
不过,这会使您的代码对sql注入开放,因此您最好使用一条准备好的语句

$stmt=$conn->prepare("DELETE FROM Account WHERE username = ?" );
$stmt->bind_param('s', $uname );
$stmt->execute();

您需要准备并执行此语句才能使其工作<代码>$stmt=$conn->prepare('DELETE FROM Account WHERE username=?')$stmt->bind_param('s',$_POST['uname'])$stmt->execute()您不需要为它的工作做准备。OP只是个新手。尽管准备查询可以确保sql注入攻击被删除。如果您称自己受到sql攻击为“工作”,那么当然,您可以通过向查询添加单引号并在sql中包含原始post数据来获得“工作”代码。