0

我正在尝试编写一个 SQL 语句,该语句将生成一个 SQL 脚本,该脚本将使用从数据库中选择的 IMAGE 更新一个 BLOB 字段。

这就是我所拥有的:

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'.

在选择中应用于此 BLOB 字段的正确函数是什么,因此 UPDATE 语句将起作用?

如果需要上下文,我希望仅将在一台服务器上生成的缩略图迁移到另一台服务器,以获取某些图像 ID。我会使用 mysqldump,但我不想破坏整个表。

任何帮助是极大的赞赏!

4

2 回答 2

2

您必须使用十六进制格式的 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 回答