2011-05-16 109 views
2

嗨大家好,我有在PHP我的小刪除功能一個小問題,下面是我的代碼PHP的MySQL刪除

function delete() 
    { 
    $q = "DELETE FROM example WHERE **author='frank'";** 

    $r = mysql_query($q) or die (mysql_error()); 
    if($r) 
    { 
     echo 'done'; 
    } 
    else 
    { 
     echo 'not done'; 
    } 
    } 

現在我沒有任何作者這個名字弗蘭克·讓意味着它不會從數據庫中刪除任何內容 但仍顯示了做味精

我不知道爲什麼????任何人都可以請幫我

+0

需要更多的信息。你的示例表包含什麼?作者專欄的數據類型是什麼?如果查詢成功,或FALSE如果有一個誤差 – 2011-05-16 16:20:17

+0

'的mysql_query()'返回語句句柄。它什麼也不做一個查詢仍然被認爲是成功的查詢,所以,除非您的查詢有語法錯誤或發生其他一些數據庫錯誤,你總是會得到處理。 – 2011-05-16 16:23:50

回答

5

這是因爲沒有錯誤,刪除並執行,它只是沒有做任何事情。你想:

if(mysql_affected_rows() > 0) { 
    echo "done"; 
} 
+0

感謝onteria ...... – frank 2011-05-16 16:34:32

0

刪除查詢將始終成功,即使沒有實際刪除行。如果你想確定有多少行受到插入,更新或刪除等操作,使用mysql_affected_rows()

+0

感謝埃裏克我相信,這將解決我的問題....美好的一天: - > – frank 2011-05-16 16:30:55

1

。在你的查詢中沒有錯誤。它會成功完成。如果你讀了documentation您將看到:

「對於其他類型的SQL語句,INSERT,UPDATE,DELETE,DROP,等的,請求mysql_query()返回TRUE或FALSE的成功錯誤。」

至於有您的查詢沒有錯誤,將返回即使什麼都沒有真正被刪除TRUE。不刪除任何內容不被視爲錯誤。