PDA

View Full Version : Would this php code work to delete all orphaned attachments?


willms_jay
04-23-2003, 09:08 PM
Would this php code work to delete all orphaned attachments? (eg. attachments who don't have a post that actually useses them? (don't ask why... seems like one of the hacks i installed keep the attachments from getting deleted if a thread gets deleted.


<?
echo "Jordan's fix the attachment table php script!<br><br>";
$connection = mysql_connect("localhost", "sampleci_jordan", "****");
if (!$connection) {
echo "<p> An error occured while trying to access the database, please notify the webmaster for a quick solution.</p><br>";
echo mysql_errno().": ".mysql_error()."<br>";
exit();
}

$query = "SELECT attachmentid from attachment";
$result = mysql_db_query("sampleci_samplecitynet", $query);
if ($result) {
$numOfRows = mysql_num_rows ($result);
echo "Found " . $numOfRows . " attachments..<Br>";
for ($i = 0; $i < $numOfRows; $i++){

$attachmentid[$i] = mysql_result ($result, $i, "attachmentid");
} // end for
} // end if

echo "Checking to see if posts have these and then generating a list of those that don't<br><Br>";
for ($i = 0; $i < count($attachmentid); $i++){
$query = "SELECT attachmentid, postid FROM post WHERE attachmentid = " . $attachmentid[$i];
$result = mysql_db_query("sampleci_samplecitynet", $query);

if ($result) {
// keepe the attachment
$numOfRows = mysql_num_rows ($result);
echo " Attachment id : " . $attachmentid[$i] . "<br>";
if ($numOfRows == 0) {
// delete the attachment here!
echo "Reject!<br>";
}
else {
// don't do anything at all!
echo "Keep!<br>";

}

} // end if
else {
// Delete the attachment!
echo "No result set!";
}
} // end for


?>


what do you think? Is my logic correct?

..jordan

filburt1
04-23-2003, 09:15 PM
SELECT a.attachmentid FROM attachment a
LEFT JOIN post p ON a.attachmentid = p.attachmentid
WHERE p.attachmentid IS NULL;

Theoretically that query will work but it will take an insanely long time to execute (50 sec on my machine).