我需要从mysql中删除一些数据。我知道一些PHP,但真的迷失了mysql,真的不想搞砸了......我确实做了.sql备份,但我需要做到这一点。这就是我在这里发布问题的原因。我知道我会因为没有尝试自己并在这里发布我的代码而得到了一些废话但是要保持真实......这是我在被卡住之前所得到的:
<?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
并删除原始匹配的行这是否有意义?....我只是试图解释它,我已经尽了自己的头脑:(
答案 0 :(得分:2)
要做你所问的问题,你只需要1个查询:
delete subscriber, subscription from subscriber,subscription where subscription.status = 0 and subscription.snid=subscriber.snid;
答案 1 :(得分:2)
尝试这样的事情:
DELETE a,b FROM subscriber AS a INNER JOIN subscription AS b ON a.snid = b.snid WHERE b.status = 0;
答案 2 :(得分:0)
如果snid键喜欢订阅者和订阅者,则应该在删除操作时使用外键并级联。
http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html
答案 3 :(得分:0)
您需要做的就是在while循环中创建一个if语句来检查状态,如果它是0则在两个表上执行delete。以下是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语句,这样如果它没有从订阅表中删除,它也不会从订阅者表中删除。
答案 4 :(得分: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']);
}
答案 5 :(得分: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;");
}