s后面的长度是不需要你自己去获取的,它是使用PHP的serialize函数序列号数组的时候自动计算的,一万多条记录不算多,可以使用下面的PHP代码来批量处理下
- <?phptry { // 迓接到数据库 $pdo = new PDO('mysql:host=localhost;dbname=your_database', 'your_username', 'your_password'); $pdo->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();}?>
复制代码 |