2012-03-23 69 views
1

我需要從mysql中刪除一些數據。我知道一些PHP,但真正迷失在MySQL中,真的不想搞砸這個了......我做了一個.sql備份,但我需要正確的做到這一點。這就是爲什麼我在這裏發佈問題。我知道我會得到一些廢話不嘗試自己和張貼在這裏我的代碼,但要hosnest ..這是據我得到了我被困前:php從mysql數據庫中刪除鏈接的行

<?php 
$con = mysql_connect("localhost","USERNAME","PASSWORD"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("DATABASE", $con); 

$result = mysql_query("SELECT * FROM subscriber"); 

while($row = mysql_fetch_array($result)) 
    { 
    echo $row['mail'] . " " . $row['snid']; 
    echo "<br />"; 
    } 

mysql_close($con); 
?> 

我真正想做的是這樣的:

  • 找到所有行status = 0中的表稱爲subscription,並得到現場snid(這是一個整數)
  • 然後轉到表叫subscriber並與匹配snid刪除行(也是一個領域此錶行)
  • 然後回到subscription,刪除原匹配的行

這是否讓SENCE?....我做我自己的頭只是試圖解釋:(

任何幫助或建議是非常非常感激。

回答

2

做你問什麼,你只需要1個查詢:

delete subscriber, subscription from subscriber,subscription where subscription.status = 0 and subscription.snid=subscriber.snid; 
+0

非常感謝。 – Cybercampbell 2012-03-24 00:10:03

+0

不客氣:)我不是唯一一個提供良好答案的人;) – haltabush 2012-03-24 00:14:36

2

嘗試是這樣的:

DELETE a,b FROM subscriber AS a INNER JOIN subscription AS b ON a.snid = b.snid WHERE b.status = 0; 
0

所有你需要做的是建立一個if語句在while循環中檢查狀態,如果它是0,則執行兩個表上的刪除。下面是while循環代碼:

while($row = mysql_fetch_array($result)) 
    { 
    if($row['status']==0) { 
     if(mysql_query("DELETE FROM `subscriber` WHERE `snid`={$row['snid']}") { 
     mysql_query("DELETE FROM `subscription` WHERE `snid`={$row['snid']}"); 
     } 
    } 
    } 

我把一個額外的if語句在你刪除,這樣,如果不從訂閱表中刪除它不會從用戶表中刪除任。

0
$result = mysql_query("SELECT * FROM subscriber WHERE status=0"); 

while($row = mysql_fetch_array($result)) { 
    mysql_query('DELETE FROM subscription WHERE snid =' . $row['snid']); 
    mysql_query('DELETE FROM subscriber WHERE id =' . $row['id']); 
} 
0

這應該有效。

$result = mysql_query("SELECT * FROM subscription WHERE status = 0;"); 

while($row = mysql_fetch_array($result)) 
{ 
    $snid = $row['snid']; 
    mysql_query("DELETE FROM subscriber WHERE snid = $snid;"); 
    mysql_query("DELETE FROM subscription WHERE snid = $snid;"); 
}