我正在尝试从名为user_enrole的表中删除所有记录。我正在使用此查询
DELETE * FROM user_enrole
我认为我的查询的语法没有错,但它给我的错误说
#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法 在第1行'* FROM user_enrole'附近
我已经加倍检查我的语法我无法弄清楚出现了什么问题,有人可以指出。
是否因为该表与使用表或什么关系而发生?
答案 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);
?>