mysqlおよびphpコマンドを使用して2つのBLOBフィールドを連続して更新しようとすると問題が発生します。
行にBLOBを挿入しても問題はないようですが、これが私が行うことです。
$logotemp = $_FILES['eventlogo']['tmp_name'];
$thumbnailtemp = $_FILES['eventthumbnail']['tmp_name'];
$openlogo = fopen($logotemp, 'r');
$openthumbnail = fopen($thumbnailtemp, 'r');
$logo = fread($openlogo, filesize($logotemp));
$logo = addslashes($logo);
$thumbnail = fread($openthumbnail, filesize($thumbnailtemp));
$thumbnail = addslashes($thumbnail);
fclose($openlogo);
fclose($openthumbnail);
したがって、2つのフォームファイル入力があり、それらのファイルが読み取られ、変数$logおよび$thumbnailとして設定されます。次に、次のコマンドを使用して、これをDBに入力します。
$qry = "INSERT INTO $table (`Event Logo`, `Venue Logo`) VALUES ('$logo', '$thumbnail')";
$result = mysql_query($qry);
if(!$result) {
die(mysql_error());
}
上記は問題なく機能しますが、塗りつぶされる残りのフィールドを削除しました。クエリは機能し、画像をページに戻し、その行の他のすべての情報と一緒に表示できます。
次に、行を編集したいので、edit.phpという新しいphpファイルを作成しました。これは、上記で使用したphpファイルのコピーであるnew.phpです。
これは、フォームが同一であることを意味し、ページが表示されると、各入力の値にデータベースからの情報が事前に入力され、アップロードフィールドの横にロゴとサムネイルが表示されます。
次に、上記とほぼ同じコードを使用してクエリを実行して行を更新すると、常に両方のBLOBに空の値が入力され、アップロードされた画像が実質的に削除されます。これが何が起こるかです:
$id = $_POST['eventid'];
$logotemp = $_FILES['eventlogo']['tmp_name'];
$openlogo = fopen($logotemp, 'r');
$logo = fread($openlogo, filesize($logotemp));
$thumbnailtemp = $_FILES['eventthumbnail']['tmp_name'];
$openthumbnail = fopen($thumbnailtemp, 'r');
$thumbnail = fread($openthumbnail, filesize($thumbnailtemp));
fclose($openlogo);
fclose($openthumbnail);
したがって、ここでも、フォームフィールドは引き続きeventlogoおよびeventthumbnailと呼ばれ、変数は引き続き$logoおよび$thumbnailです。次に、次のクエリを使用して行を更新します。
$qry = "UPDATE $table SET `Event Name` = '$name', `Date` = '$date', `Time` = '$time', `Venue` = '$venue', `Price` = '$price', `Open To` = '$opento', `Rep Name` = '$repname', `Rep Email` = '$repemail', `Address` = '$address', `Website` = '$website', `Phone` = '$phone', `Description` = '$description', `Event Logo` = '$logo', `Venue Logo` = '$thumbnail' WHERE `Event ID` = '$id'";
今回更新された他の変数を残しました。
$result = mysql_query($qry);
if(!$result) {
die(mysql_error());
}
クエリを実行すると、最後にある2つの画像BLOBフィールドを除いて、必要な他のフィールドが更新されます。アップロードフィールドのコード、そのフィールドの内容を読み取るコードをコピーして貼り付け、手動でクエリを入力してこれらのフィールドを更新したことを考えると、何が問題になっているのかわかりません。
明らかな何かが欠けていますか?どんな助けでも大歓迎です。
ありがとう、エド