mysqlとphpコマンドを使用して2つのBLOBフィールドを1行で更新しようとすると問題が発生します。mysql update 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());
}
上記の私もいっぱいにフィールドの残りの部分をトリミングしているが、正常に動作します。クエリが機能し、イメージをページに戻してから、その行の他のすべての情報とともに表示することができます。
この行を編集したいので、new.phpという上記で使用したphpファイルのコピーであるedit.phpという新しいphpファイルを作成しました。
これは、フォームが同一であることを意味し、ページが表示されると、各入力の値はデータベースの情報で事前に設定され、アップロードフィールドの横にロゴとサムネイルが表示されます。
上記とほとんど同じコードを使用して行を更新するクエリを実行すると、常に両方のブロブに空の値が入り込み、基本的にアップロードされたイメージが削除されます。ここでは何が起こるかされています。だから、もう一度、フォームフィールドは、まだeventlogoとeventthumbnail呼ばれ
$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);
、および変数がまだ$ロゴと$サムネイルです。次に、次のクエリを使用して行を更新します。
これまでに更新された他の変数は残っています。
$result = mysql_query($qry);
if(!$result) {
die(mysql_error());
}
クエリが実行されると、最後の2つのイメージBLOBフィールドを除いて、必要な他のフィールドも更新されます。アップロードフィールドのコードをコピーして貼り付け、そのフィールドの内容を読み取ったコードを手作業で入力してフィールドを更新すると、どうしたらうまくいかないのか分かりません。
明らかなものがありませんか?どんな助けでも大歓迎です。
おかげで、編
1st。パラメタリゼーションされたSQLをそのまま使用してください。これは問題を招いています。第二に、edit.phpでは、少なくともaddslashesのロゴが不足しています。バイナリデータには、あなたのsqlクエリを混乱させる文字が含まれますが、mysql(および他のSQLサーバ)はそれらを静かに受け入れます。 –
申し訳ありませんが、私のコードはaddslashesを含んでいますが、何らかの理由でここにそれらを含めていません。ファイルのオープン時に何か間違っていて、それをバイナリとして読んで、空になっていなければなりません – Eds