2014-06-19 83 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)); 

您將從響應獲得的問題。