数据库大神,帮忙写个 数据库批量替换

查看 86|回复 7
作者:baiboy   
;s:65:"https://www.3601.com/img/logo.jpg
数据库里面存放着1w多条这种信息
7牛云换域名了。。。。
现在换成
;s:65:"https://www.360.com/img/logo.jpg
网址变了,s后面的长度不一样了。。。
update info set param=replace(param,'s:65:"http:','s:64:"http:');
部分能显示,部分不能,因为附件的名字长度不一样
怎么批量获取网址长度, 来替换s:后面的长度数值。。。。

数据库, 长度

楚苓   
我不是雷锋
爱说说   
发金币啊。。
kqkpklz   
先这样,在那样,然后在这样,听懂了么,我只说一次哦
白色   
ctrl+H  全部替换  
上面是开玩笑的
notepad
个人支付宝接口   
s后面的长度是不需要你自己去获取的,它是使用PHP的serialize函数序列号数组的时候自动计算的,一万多条记录不算多,可以使用下面的PHP代码来批量处理下
[ol]
  • setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  •     // 查询 info 表的数据
  •     $stmt = $pdo->prepare('SELECT id, param FROM info');
  •     $stmt->execute();
  •     while ($row = $stmt->fetch()) {
  •         $id = $row['id'];
  •         $param = unserialize($row['param']);
  •         // 修改 param 中的 url 元素
  •         if (is_array($param) && isset($param['url'])) {
  •             $param['url'] = str_replace('https://www.3601.com', 'https://www.360.com', $param['url']);
  •             $serializedParam = serialize($param);
  •             // 更新数据库中的数据
  •             $updateStmt = $pdo->prepare('UPDATE info SET param = :param WHERE id = :id');
  •             $updateStmt->bindParam(':param', $serializedParam);
  •             $updateStmt->bindParam(':id', $id);
  •             $updateStmt->execute();
  •         }
  •     }
  •     echo "数据更新成功。";
  • } catch (PDOException $e) {
  •     echo "错误:" . $e->getMessage();
  • }
  • ?>
  • [/ol]复制代码
  • xbz0412   
    教你一招,导出为SQL文件,文本编辑器打开,直接替换,保存文件再导入回去
    阿杰   
    xbz0412 发表于 2023-11-1 01:25
    教你一招,导出为SQL文件,文本编辑器打开,直接替换,保存文件再导入回去

    绝招
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部