php从mysql数据库中删除链接行


php delete links rows from mysql database

我需要从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);
?>

我真正想做的是:

  • 在名为subscription的表中查找status=0的所有行,并获取字段snid(它是一个整数)
  • 然后转到名为subscriber的表,删除具有匹配snid的行(也是该表行中的字段)
  • 然后返回subscription并删除原始匹配行

这有意义吗?。。。。我已经尽力解释了:(

要完成您的要求,您只需要一个查询:

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

试试这样的东西:

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

您所需要做的就是在while循环中创建一个if语句来检查状态,如果状态为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']}");
      }
    }
  }

我在您的delete上添加了一个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;");
}

如果snid密钥喜欢订阅者和订阅,则应该使用带有级联删除操作的外键。

http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html