2012-04-18 17 views
0

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フィールドを除いて、必要な他のフィールドも更新されます。アップロードフィールドのコードをコピーして貼り付け、そのフィールドの内容を読み取ったコードを手作業で入力してフィールドを更新すると、どうしたらうまくいかないのか分かりません。

明らかなものがありませんか?どんな助けでも大歓迎です。

おかげで、編

+0

1st。パラメタリゼーションされたSQLをそのまま使用してください。これは問題を招いています。第二に、edit.phpでは、少なくともaddslashesのロゴが不足しています。バイナリデータには、あなたのsqlクエリを混乱させる文字が含まれますが、mysql(および他のSQLサーバ)はそれらを静かに受け入れます。 –

+0

申し訳ありませんが、私のコードはaddslashesを含んでいますが、何らかの理由でここにそれらを含めていません。ファイルのオープン時に何か間違っていて、それをバイナリとして読んで、空になっていなければなりません – Eds

答えて

0

カントは、私がこれをソートコードを見つけることが、私はただ一度に1を更新してしまったと思います。

関連する問題