0

データベースから選択された IMAGE で BLOB フィールドを更新する SQL スクリプトを生成する SQL ステートメントを作成しようとしています。

これは私が持っているものです:

select concat( 'UPDATE `IMAGE` SET THUMBNAIL = ', 
               QUOTE( THUMBNAIL ), 
               ' WHERE ID = ', ID, ';' ) as UPDATE_STATEMENT
  from IMAGE;

上記の THUMBNAIL は、生の画像データを含む BLOB フィールドです。結果のスクリプトを実行すると、次のエラーが表示されます。

ERROR at line 2: Unknown command '\\'.

次のように、最初に QUOTE() 関数なしでこれを試しました。

select concat( 'UPDATE `IMAGE` SET THUMBNAIL = \'', 
               THUMBNAIL, 
               '\' WHERE ID = ', ID, ';' ) as UPDATE_STATEMENT
  from IMAGE;

結果のスクリプトを実行すると、次のエラーが発生します。

ERROR at line 2: Unknown command '\0'.

UPDATEステートメントが機能するように、selectでこのBLOBフィールドに適用する適切な関数は何ですか?

コンテキストが必要な場合は、あるサーバーで生成されたサムネイルを、特定の画像 ID のみを対象として別のサーバーに移行することを検討しています。mysqldump を使用しますが、テーブル全体を壊したくありません。

どんな助けでも大歓迎です!

4

2 に答える 2

2

16進形式のBLOBを使用する必要があります。次のようになります。

select concat( 'UPDATE `IMAGE` SET THUMBNAIL = ', 
               0xC9CBBBCCCEB9C8CABCCCCEB9C9CBBB...., 
               ' WHERE ID = ', ID, ';' ) as UPDATE_STATEMENT
  from IMAGE;

または、 Openrowsetコマンドを使用すると便利な場合があります

于 2010-04-13T09:25:21.270 に答える
0
 <?php if (isset($_POST['sub'])) { 
     $tfname=$_FILES['f1']['tmp_name'];
     $name=$_POST['hi']; 
     $cont=file_get_contents($tfname);
     $cont=addslashes($cont); 
     mysql_connect("localhost" ,"root" ,"");
     mysql_select_db("k"); 
     $sqlstt="update test_image set
         id='2',name='$name',image='$cont' where id='2' ";
     if(mysql_query($sqlstt)) 
         echo "updated"; 
     else 
         echo "not";         
 } ?>

 <form action="" method="post" enctype="multipart/form-data">
     Name:-<input type="text" name="hi" /> 
     select image:-<input type="file" name="f1" required value="select" /> 
     <input type="submit" name="sub" value="update" /> 
 </form>  

これはうまくいきました

于 2013-03-21T08:32:26.050 に答える