2014-06-19 52 views
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"); 
$DB->query("ALTER TABLE users AUTO_INCREMENT = 1"); 

$DB->close(); 

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

你应该使用TRUNCATE而不是删除 –

+0

你应该从'$ DB-> query()'检查错误。 – Barmar

+2

'DELETE * FROM users'是一个语法错误。它应该是'DELETE FROM users'。 – Barmar

回答

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

非常翔实的答案 –

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')); 
2

首先,您的删除系统是错误的,它会为您的代码生成错误。

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

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)); 

您将从响应获得的问题。