吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 621|回复: 7
收起左侧

[其他求助] 帮助解决一个SQL数据库批量替换问题

[复制链接]
first 发表于 2024-4-25 18:45
1000吾爱币
目的:在宝塔sql数据库此字段中批量替换指定字符。

当前问题:通过update命令替换或直接在数据库字段中手动编辑替换,替换成功后,网站前端却显示为空内容。


红框内为替换的域名部分,其他字符并未变动,但是前端变成了空内容,
比如字段内容是:
a:5:{s:9:"videodata";s:494:"https://1.com/1.mp4";s:4:"hour";i:0;s:3:"min";i:47;s:3:"sec";i:51;s:9:"videotype";i:2;}
通过SQL命令或者手动双击修改为:
a:5:{s:9:"videodata";s:494:"https://a.com/1.mp4";s:4:"hour";i:0;s:3:"min";i:47;s:3:"sec";i:51;s:9:"videotype";i:2;}
其他的字符并没变化,但是前端内容变空了:

另外通过数据库打包下载后,用软件替换再打包重新导入,问题依旧。
即,只要是动了数据库,前端内容都会变空


希望帮助与解决的问题:
在不二开前端程序的情况下,在数据库中批量替换指定字符,但不会使前端此字段内容变空


PS:听朋友说这个字段数据因为被格式化了导致,但没有好的解决办法。

最佳答案

查看完整内容

应该把数据库样例贴出来,起码贴出几条数据。还有个问题,建议你试试:s:494:"https://1.com/1.mp4,这个494是不是内容长度?你的新网址https://a.com,是否和原网址1.com长度一致?如果不一致,你还需要修改s:494的长度.

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qsuron 发表于 2024-4-25 18:45
应该把数据库样例贴出来,起码贴出几条数据。还有个问题,建议你试试:s:494:"https://1.com/1.mp4,这个494是不是内容长度?你的新网址https://a.com,是否和原网址1.com长度一致?如果不一致,你还需要修改s:494的长度.
 楼主| first 发表于 2024-4-25 20:59
qsuron 发表于 2024-4-25 19:55
应该把数据库样例贴出来,起码贴出几条数据。还有个问题,建议你试试:s:494:"https://1.com/1.mp4,这个49 ...

不是长度,双击数据库字段手动修改URL部分任意一个字符再保存也是同样问题
qsuron 发表于 2024-4-25 21:10
看看源码,是否存在数据库读取的校验,比如:客户端正常操作每次修改这个字段,就会计算一下MD5,或者其他算法,生成校验位保存到某个表里,读取字段时,校验这个字段再读出。
qsuron 发表于 2024-4-25 21:11
qsuron 发表于 2024-4-25 21:10
看看源码,是否存在数据库读取的校验,比如:客户端正常操作每次修改这个字段,就会计算一下MD5,或者其他 ...

不看源码通过数据库来判断的方法:在客户端改一下字段,然后保存。然后导出数据库,用文本对比软件,比如beyond,对比整个数据库的变动。应该很容易看出来的。
qsuron 发表于 2024-4-25 21:28
猜测大概率就是该字段本身存在校验,对程序员最方便的校验就是数据本身自校验。在读取完数据new对象的时候在构造函数里进行校验,比如说这个494就可以是一个校验位。尝试:通过正常操作,把A.com网址保存到数据表里,然后再通过改数据库的方式,把另外一条原本的1.com网址,改成跟你刚刚保存的A.com网址数据库中的数据。如果改完之后,两个都变成A网址,并且没有失效,那就是这个字段本身具有数据检验的问题。如果改完之后还是不行,那就参考上一条,可能校验位放在别的字段了,看看是哪里哪个字段。

方案1:需要修改源码,跳过校验。
方案2、或者根据源码来计算出校验位算法,写脚本个一条一条处理需要替换的数据生成校验位,再把网址和校验位一起替换到原本数据库。
yucevip 发表于 2024-4-25 21:47
你去分析一下前端或后端这个功能代码怎么调用的数据库不就行了吗?
shuisanyue 发表于 2024-4-25 22:03
楼主原文:
红框内为替换的域名部分,其他字符并未变动,但是前端变成了空内容,
比如字段内容是:
a:5:{s:9:"videodata";s:494:"https://1.com/1.mp4";s:4:"hour";i:0;s:3:"min";i:47;s:3:"sec";i:51;s:9:"videotype";i:2;}
通过SQL命令或者手动双击修改为:
a:5:{s:9:"videodata";s:494:"https://a.com/1.mp4";s:4:"hour";i:0;s:3:"min";i:47;s:3:"sec";i:51;s:9:"videotype";i:2;}
其他的字符并没变化,但是前端内容变空了:
**************************************************
明白了,只要你update这个字段中任何一个字符,前端就会为空……

a:5:{s:9:"videodata";s:494:"https://1.com/1.mp4";s:4:"hour";i:0;s:3:"min";i:47;s:3:"sec";i:51;s:9:"videotype";i:2;}
那问一下你要修改的这个数据最开始是如何进入的?新数据能进去……

a:5:{s:9:"videodata";s:494:"https://a.com/1.mp4";s:4:"hour";i:0;s:3:"min";i:47;s:3:"sec";i:51;s:9:"videotype";i:2;}
那你就 用上面改好的数据,以全新的数据进库不就行了吗
然后老数据去掉……
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-12 12:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表