2012-03-23 68 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;"); 
}