2012-05-25 83 views
2

刪除數據,這是我的查詢查詢不從DB

$db2=mysql_connect("localhost","root",""); 
    mysql_select_db("my_requests",$db2); 

    $query=mysql_query("SELECT * FROM details INNER JOIN product ON details.user_id = product.user_id"); // find the city 
    $row=mysql_fetch_array($query);// save record 

     $id=$row['user_id']; 
     echo "$id"; 


     $query1=mysql_query("DELETE * FROM details WHERE details.user_id=$id"); 
     $query2=mysql_query("DELETE * FROM product WHERE product.user_id=$id"); 

在這裏,我有兩個表的產品和細節,用戶ID是在細節的主鍵,並在產品製造外鍵。

讓假設我有兩個條目與USER_ID = 12的數據庫,另一個USER_ID = 11 1.當我採取兩個表的innerjoin和嘗試顯示USER_ID的它僅示出一個USER_ID 12 2.當我試圖刪除使用user_id的數據,它不會從表中刪除數據。

遺憾的英語不好

+2

請停止與古mysql_編寫新的代碼*功能。他們不再被維護,社區已經開始了貶值過程。相反,您應該瞭解準備好的聲明並使用PDO或MySQLi。 – Bono

+1

在您的查詢嘗試'Select product.user_id從...' – Bob

回答

1

在你SELECT查詢正確的語法手冊,你必須指定THA表,以獲得*details.*products.*,becasue你加入兩張表。就你而言,這是相同的結果。

您還需要將$row=mysql_fetch_array($query);在一個循環中,獲取各行的話,你有一個壞DELETE語法:

while($row=mysql_fetch_array($query)) { 
    $id=$row['user_id']; 
    echo "$id"; 

    $query1=mysql_query("DELETE FROM details WHERE details.user_id=$id"); 
    $query2=mysql_query("DELETE FROM product WHERE product.user_id=$id"); 


} 
+0

我試着做同樣的事情,它從prduct表中刪除user_id = 11,並沒有刪除其餘條目 – Shiven

+0

而你的腳本回聲更多'$ id'而不是刪除? – jbrtrnd

+0

不,它只是顯示正在從產品表中刪除的一個ID – Shiven

7

proper syntax of a DELETE query不包括*

DELETE FROM product WHERE product.user_id=$id 
//^^^^^^^^^ 

如果你做一些基本的錯誤檢查和調試,該API將報告語法錯誤。

// This query has a syntax error and will return FALSE... 
$query1 = mysql_query("DELETE * FROM details WHERE details.user_id=$id"); 
if (!$query1) { 
    // On failure, see what your error was. 
    echo mysql_error(); 
} 

以上將報告內容類似的錯誤:

ERROR 1064(42000):您有一個錯誤的SQL語法;檢查對應於你的MySQL服務器版本使用附近的「* FROM

+0

http://www.w3schools.com/sql/sql_delete.asp說我可以使用DELETE * – Shiven

+1

@Shiven不要使用w3schools。這是一個SQL語法參考,但不是MySQL文檔。 MySQL不允許有*。直接檢查MySQL文檔。 –

+0

@Shiven此外,w3schools經常被發現已過時。這是非常不可靠的。最好總是去原始的來源。 –