画像のファイル名に応じて、データベースから行を削除したい。以下に2つのテーブルがあるとしましょう。
Image Table:
ImageId ImageFile
01 cat.png
02 dog.png
03 dog_2.png
Image_Question Table:
ImageId SessionId QuestionId
01 AAA 4
02 ABD 1
03 RTD 11
私のアプリケーションでファイルimagedog_2.pngを削除してから、画像テーブルのdog_2.pngを示す行を削除して(これは正常に機能しています)、Image_Questionテーブルから行を削除できるようにしたいとします。行には、画像テーブルのImageIdおよびImageFile名に関連付けられた同じImageIdが含まれています(これは機能していません)。
したがって、上記の例では、削除後の2つのテーブルは次のようになります。
Image Table:
ImageId ImageFile
01 cat.png
02 dog.png
Image_Question Table:
ImageId SessionId QuestionId
01 AAA 4
02 ABD 1
ただし、Image_Questionテーブルから行が削除されるわけではありません。この行を削除するにはどうすればよいですか?
以下は、画像テーブルから行を削除する完全なコードであり、セットアップされているが、Image_Questionテーブルから行を削除しても完全には完了していないコードのほとんどが含まれています。
$image_file_name = $_GET["imagefilename"];
$img = "ImageFiles/$image_file_name";
echo "$image_file_name was Deleted";
unlink("ImageFiles/$image_file_name");
$imagedeletesql = "DELETE FROM Image WHERE ImageFile = ?";
if (!$delete = $mysqli->prepare($imagedeletesql)) {
// Handle errors with prepare operation here
}
//Don't pass data directly to bind_param; store it in a variable
$delete->bind_param("s",$img);
$delete->execute();
if ($delete->errno) {
// Handle query error here
}
$delete->close();
$imagequestiondeletesql = "DELETE FROM Image_Question WHERE ImageId = ?";
if (!$deleteimagequestion = $mysqli->prepare($imagequestiondeletesql)) {
// Handle errors with prepare operation here
}
// Don't pass data directly to bind_param; store it in a variable
$deleteimagequestion->bind_param("s",....);
$deleteimagequestion->execute();
if ($deleteimagequestion->errno) {
// Handle query error here
}
$deleteimagequestion->close();