MYSQL 如何修改BLOB类型的数据?

lixia52 2009-10-22 10:23:52
如题 数据是BLOB类型 怎么才能修改其中的某些值
...全文
3904 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
gmsgms 2010-03-08
  • 打赏
  • 举报
回复
引用 8 楼 forever_feng 的回复:
使用mysql_real_query而不是mysql_query,并且二进制数据要做转义
有两种方法:
方法一
1、通过mysql_real_escape_string把二进制数据转义。
2、构造sql语句,把转义后的二进制数据当成字符串写入。
3、 mysql_real_query执行sql语句。

方法二
用 mysql_stmt_send_long_data()来向blob字段写入2进制数据流。
注意点:需要注意的是bind结构的buffer_type字段,必须与要输入的数据类型相符,
如:只写入一个long 数据,则用MYSQL_TYPE_LONG,写入字符流,用MYSQL_TYPE_STRING,
写入2进制数据流,用MYSQL_TYPE_BLOB。
具体这个参数各字段的含义参见 mysql5.0手册。
该方法只适合mysql 5.0。
方法一中mysql_real_query需要知道查询语句的长度,这个怎样得出来啊?
qieqie0207 2010-02-09
  • 打赏
  • 举报
回复
可以用工具直接选文件,或者转换成二进制存
吴丁 2010-01-28
  • 打赏
  • 举报
回复
你如果存的是二进制流,那就按二进制流修改了,如果是16进制,也就照样了。
懒得去死 2009-10-23
  • 打赏
  • 举报
回复
跟平常的UPDAGE没啥区别。
平凡的思想者 2009-10-22
  • 打赏
  • 举报
回复
使用mysql_real_query而不是mysql_query,并且二进制数据要做转义
有两种方法:
方法一
1、通过mysql_real_escape_string把二进制数据转义。
2、构造sql语句,把转义后的二进制数据当成字符串写入。
3、 mysql_real_query执行sql语句。

方法二
用 mysql_stmt_send_long_data()来向blob字段写入2进制数据流。
注意点:需要注意的是bind结构的buffer_type字段,必须与要输入的数据类型相符,
如:只写入一个long 数据,则用MYSQL_TYPE_LONG,写入字符流,用MYSQL_TYPE_STRING,
写入2进制数据流,用MYSQL_TYPE_BLOB。
具体这个参数各字段的含义参见 mysql5.0手册。
该方法只适合mysql 5.0。
lixia52 2009-10-22
  • 打赏
  • 举报
回复
谢谢楼上的大大

编辑查询得到的BLOB值 可以通过什么方式修改?
16进制 还是直接修改?
vinsonshen 2009-10-22
  • 打赏
  • 举报
回复
select data into @str from table where id='user1';
update table set data=@str where id='user2';
lixia52 2009-10-22
  • 打赏
  • 举报
回复
update table set data=hex(data) where ?
lixia52 2009-10-22
  • 打赏
  • 举报
回复
怎样 转换成HEX值导出 然后进行数据中的某字符 然后再导入?
lixia52 2009-10-22
  • 打赏
  • 举报
回复
BLOB数据是一些用户信息

另外还有1个问题:
select data from table where id='XXX'
DATA的值为BLOB类型
select hex(data) from table where id='user1' 得到user1的HEX DATA值
我想让id为user2的data值 等于 user1的DATA值
如何通过转换成HEX的方式来修改USER2的值?
vinsonshen 2009-10-22
  • 打赏
  • 举报
回复
假设字段memo为blob类型,在该字段的值前面增加字符串'add--'
则操作语句如下:

update tb_blog set memo=concat('add---',cast(memo as char)) where id=1;
wwwwb 2009-10-22
  • 打赏
  • 举报
回复
BLOB中存入的是什么内容?
ACMAIN_CHM 2009-10-22
  • 打赏
  • 举报
回复
[Quote] update table set data=hex(data) where ?[/Quote]

update table set data=unhex('A2FF436E') where ?
nianzhang747 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 forever_feng 的回复:]
使用mysql_real_query而不是mysql_query,并且二进制数据要做转义
有两种方法:
方法一
1、通过mysql_real_escape_string把二进制数据转义。
2、构造sql语句,把转义后的二进制数据当成字符串写入。
3、 mysql_real_query执行sql语句。

方法二
用 mysql_stmt_send_long_data()来向blob字段写入2进制数据流。
注意点:需要注意的是bind结构的buffer_type字段,必须与要输入的数据类型相符,
如:只写入一个long 数据,则用MYSQL_TYPE_LONG,写入字符流,用MYSQL_TYPE_STRING,
写入2进制数据流,用MYSQL_TYPE_BLOB。
具体这个参数各字段的含义参见 mysql5.0手册。
该方法只适合mysql 5.0。

[/Quote]
--------------------------------------
方法二 普遍方法

57,063

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧