2011-06-26 97 views
0

我看了其他主題,我無法弄清楚這裏有什麼問題。例如,如果我用一個簡單的SELECT *替換TRUNCATE查詢,我確實會得到結果。但是這返回false。我從這個主題複製了下面的代碼,希望得到一個結果:PHP & MySQL: Truncate multiple tablesPHP和MySQL TRUNCATE TABLE返回false與AMFPHP

而我通過AMFPHP做到了這一點。

# the host used to access DB 
define('DB_HOST', 'localhost'); 

# the username used to access DB 
define('DB_USER', 'usr'); 

# the password for the username 
define('DB_PASS', '***'); 

# the name of your databse 
define('DB_NAME', 'name'); 

//$connection = new __database(DB_HOST,DB_USER,DB_PASS,DB_NAME); 


$connection = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME); 

if (mysqli_connect_errno()) 
{ 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$query = "TRUNCATE TABLE `books`"; 

$result = $connection->query($query); 
if($result) 
{ 
    return $result; 
} 
else 
{ 
    return false; 
} 

回答

1

是否MySQL用戶具有所需的私有表來截斷表?從MySQL文檔:

[TRUNCATE]需要從MySQL 5.1.16起的DROP特權。 (在5.1.16之前,它需要DELETE權限)。

編輯:沒有privatelage會產生某種錯誤 - 你記錄或能夠看到任何查詢錯誤?

+0

謝謝,就是這樣。不知道,我總是認爲DELETE就足夠了。 - ) –

+0

真棒,很高興幫助!:) –

0

根據該文件,「截斷操作不會對刪除的行數返回一個有意義的值,通常的結果是‘受影響的0行,’應解釋爲‘沒有信息。’見http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html

因此,看起來你的if語句將會沿着else路徑走下去,即使截斷成功了。

+0

當我改變上面所述的特權時,結果返回true。 –