php从mysql数据库中删除链接的行
我需要从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?....我做我自己的头只是试图解释:(
任何帮助或建议是非常非常感激。
做你问什么,你只需要1个查询:
delete subscriber, subscription from subscriber,subscription where subscription.status = 0 and subscription.snid=subscriber.snid;
如果用户和订阅被snid密钥所喜欢,则应该使用外部密钥与级联删除操作。
http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html
好的..我会检查出来的。谢谢。 – Cybercampbell 2012-03-23 22:32:03
尝试是这样的:
DELETE a,b FROM subscriber AS a INNER JOIN subscription AS b ON a.snid = b.snid WHERE b.status = 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语句在你删除,这样,如果不从订阅表中删除它不会从用户表中删除任。
$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']);
}
这应该有效。
$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;");
}
非常感谢。 – Cybercampbell 2012-03-24 00:10:03
不客气:)我不是唯一一个提供良好答案的人;) – haltabush 2012-03-24 00:14:36