;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:后面的长度数值。。。。 数据库, 长度
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]复制代码