[英]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
並刪除原始匹配的行 這是否有意義?....我只是想解釋一下我自己的頭腦:(
要做你所問的,你只需要1個查詢:
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;
如果snid鍵喜歡訂閱者和訂閱,則應該使用帶有級聯刪除操作的外鍵。
http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html
您需要做的就是在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語句,這樣如果它沒有從訂閱表中刪除,它也不會從訂閱者表中刪除。
$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;");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.