0

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フィールドを除いて、必要な他のフィールドが更新されます。アップロードフィールドのコード、そのフィールドの内容を読み取るコードをコピーして貼り付け、手動でクエリを入力してこれらのフィールドを更新したことを考えると、何が問題になっているのかわかりません。

明らかな何かが欠けていますか?どんな助けでも大歓迎です。

ありがとう、エド

4

1 に答える 1

0

これを並べ替えたコードを見つけることができませんが、一度に1つずつ更新することになったと思います。

于 2012-11-26T16:59:01.677 に答える