php удалить строки ссылок из mysql databse

Мне нужно удалить некоторые данные из 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 и удалите исходную совпадающую строку

Это имеет смысл? …. Я сделал свою собственную голову, просто пытаясь объяснить это 🙁

Любая помощь или совет очень высоко ценится.

Solutions Collecting From Web of "php удалить строки ссылок из mysql databse"

Чтобы сделать то, что вы просили, вам нужен только 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; 

Все, что вам нужно сделать, это создать оператор 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;"); } 

если подписчик и подписка понравились последним ключом, вы должны использовать внешний ключ с каскадом при удаленных операциях.

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