删除不在mysql中工作的查询

时间:2014-04-26 18:37:06

标签: mysql sql

我正在尝试从名为user_enrole的表中删除所有记录。我正在使用此查询

DELETE * FROM user_enrole

我认为我的查询的语法没有错,但它给我的错误说

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   在第1行'* FROM user_enrole'附近

我已经加倍检查我的语法我无法弄清楚出现了什么问题,有人可以指出。

是否因为该表与使用表或什么关系而发生?

4 个答案:

答案 0 :(得分:3)

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

如果要删除按一个或多个条件过滤的特定记录,您将在WHERE子句中指定这些条件,如下所示:

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

答案 1 :(得分:1)

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

的原因

答案 2 :(得分:0)

最好使用" TRUNCATE TABLE user_enroll"由于只删除所有行,它的速度要快得多。 comparison of truncate vs delete in mysql/sqlserver

答案 3 :(得分: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);
?>