从表中删除所有行,并重置自动增量

时间:2014-06-19 04:26:54

标签: php mysql sql

代码如下。好像我运行这个文件时,它没有做任何事情。

header('Content-Type: application/json');

$DB = new mysqli("localhost", "root", "root", "friendslist");
if($DB->connect_errno) {
    die("Connect failed: ". $DB->connect_error);
}

$DB->query("DELETE * FROM users");
$DB->query("ALTER TABLE users AUTO_INCREMENT = 1");

$DB->close();

    echo json_encode(Array('status' => 'ok'));

3 个答案:

答案 0 :(得分:4)

您的查询语法不正确。如果您阅读documentation,您会看到DELETE的有效语法是:

DELETE FROM users

或:

DELETE users.* FROM users

其中.*在第二个版本中是可选的。但DELETE *无效。

您也可以使用TRUNCATE tablename删除表格中的所有内容,并在一个步骤中重置自动增量ID。

您还应该检查查询是否成功:

$DB->query("DELETE * FROM users") or die ($DB->error);

会告诉你有语法错误。然后我确定你会检查文档以查看正确的语法是什么,并立即修复它,而不是将问题发布到SO的慢速路径。

答案 1 :(得分:2)

首先,删除systex是错误的,这会导致代码出错。

其次,你应该使用truncate而不是delete,因为它们以两种不同的方式工作。

TRUNCATE TABLE tablename;实际上删除并重新创建表格,使其快速并将自动增量种子值重置为1.

然而,DELETE FROM tablename;删除表中的所有数据。它没有使用“TRUNCATE TABLE”方法那么快,它保留了之前的自动增量种子值。

所以你可以使用以下内容:

if($DB->query("TRUNCATE TABLE users"))
    echo json_encode(Array('status' => 'ok'));
else  echo json_encode(Array('status' => $DB->error));

您将从响应中得到问题。

答案 2 :(得分:0)

我认为您必须从删除查询

中删除*
header('Content-Type: application/json');

$DB = new mysqli("localhost", "root", "root", "friendslist");
if($DB->connect_errno) {
    die("Connect failed: ". $DB->connect_error);
}

$DB->query("DELETE FROM users");// Remove * from here
$DB->query("ALTER TABLE users AUTO_INCREMENT = 1");

$DB->close();

    echo json_encode(Array('status' => 'ok'));