MySQL中的删除查询无法正常工作

6
我正在尝试从名为user_enrole的表中删除所有记录。我使用了以下查询语句:
DELETE * FROM user_enrole

我认为我的查询语法没有错误,但是它给我返回了一个错误信息:
#1064 - 您的SQL语法有误;请查阅针对您的MySQL服务器版本的手册,了解正确的语法
在第1行附近出现 * FROM user_enrole。
我已经仔细检查过我的语法,但我还是无法弄清楚出了什么问题,请问有人能指出吗?
这是否是因为该表与use表之间的关系引起的呢?

3
“near '*'”告诉您错误从哪里开始。 - MISJHA
4个回答

4

在删除时不需要使用星号。只需执行DELETE FROM user_enrole即可删除所有记录。

如果您想删除由一个或多个条件过滤的特定记录,则可以在WHERE子句中指定这些条件,如下所示:

DELETE FROM user_enrole
WHERE somecolumn > 1
AND anothercolumn = 'Username'

1
当您编写 SELECT * FROM... 时,* 表示 everything,即所有字段。行的所有部分。在删除时使用相同的语法没有意义,因为您只能删除整行。这就是为令语法为 DELETE FROM... 的原因。

0

我现在正在输入这个,因为我遇到了同样的问题。当我查看给出的答案时,它们并没有帮助我。可能是因为问题没有提供所有相关脚本的完整描述:HTML、Javascript、php等。 以下是我用于从数据库表中删除的正确php脚本的结构

<?php
$servername = "localhost";
$username = "user";
$password = "0007";
$dbname = "CRCSystems";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
$tblname = test_input($_POST["tblname"]);
$names = test_input($_POST["names"]);
    function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
$sql = "SELECT * FROM $tblname WHERE Names = '$names'";
if (mysqli_query($conn, $sql)) {
    $result = mysqli_query($conn, $sql);
    $row = mysqli_fetch_row($result);
    if ($row) {
        $sql = "DELETE FROM $tblname WHERE Names = '$names'";
        $result = mysqli_query($conn, $sql);
        echo 1;         //record deleted    
    } else {
        echo 0;         //record does not exist 
    }
}
mysqli_close($conn);
?>

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接