429 行
22 KiB
PHP
429 行
22 KiB
PHP
<?php
|
||
/**
|
||
* 数据库测试数据完整性综合修复脚本
|
||
*
|
||
* 覆盖:
|
||
* 1. fa_user 用户表:补充头像、昵称、手机号、个性签名、性别等
|
||
* 2. fa_fc_user_ext 扩展表:补全身份类型、实名状态、真实姓名
|
||
* 3. fa_fc_merchant 商家表:补齐缺失商家(车行天下、洁净到家分部),补齐现有商家的 logo、banner、公告、地址、坐标、类目、执照等
|
||
* 4. fa_fc_post 帖子表:纠正商家帖的 identity_type 为 2,补全空缺联系人、电话、微信、地址与坐标
|
||
* 5. 同步所有计数(商家 post_count、分类 post_count、评论数等)
|
||
*
|
||
* @return void
|
||
*/
|
||
function repairDatabaseData() {
|
||
$pdo = new PDO("mysql:host=127.0.0.1;port=3307;dbname=fenleixinxi;charset=utf8mb4", "fenleixinxi", "fenleixinxi");
|
||
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||
|
||
$now = time();
|
||
|
||
echo "==================================================" . PHP_EOL;
|
||
echo "步骤 1: 修复与补全 fa_user 用户表测试数据" . PHP_EOL;
|
||
echo "==================================================" . PHP_EOL;
|
||
|
||
// 用户定义列表:[id, username, nickname, mobile, avatar, gender, bio]
|
||
$usersConfig = [
|
||
1001 => ['fc1001', '同城小助手', '13800001111', '/uploads/avatars/user_1001.png', 1, '同城便民服务与官方信息发布助手'],
|
||
1002 => ['fc1002', '小王同学', '15033443344', '/uploads/avatars/user_1002.png', 1, '贵阳本地在校大学生,分享生活闲置与学习资讯'],
|
||
1003 => ['fc1003', '洁净到家·陈姐', '13156785678', '/uploads/avatars/user_1003.png', 2, '10年家政保洁经验,诚信服务千家万户'],
|
||
1004 => ['fc1004', '测试用户A', '13000000000', '/uploads/avatars/user_1004.png', 1, '同城测试体验账号'],
|
||
2001 => ['fc2001', '顺捷物流·杨经理', '13988888888', '/uploads/avatars/user_2001.png', 1, '顺捷同城物流调度中心,高效货运日结保障'],
|
||
2002 => ['fc2002', '安家房产·周主管', '13566666666', '/uploads/avatars/user_2002.png', 1, '安家房产资深经纪人,真实房源无中介费陷阱'],
|
||
2003 => ['fc2003', '骑行爱好者·小周', '13712341234', '/uploads/avatars/user_2003.png', 1, '周末黔灵山与花溪十里河滩常客,爱骑行爱运动'],
|
||
2004 => ['fc2004', '车行天下·张总', '13800000000', '/uploads/avatars/user_2004.png', 1, '专注高品质二手车买卖与全车深度质检'],
|
||
2005 => ['fc2005', '洁净到家·王师傅', '13156785678', '/uploads/avatars/user_2005.png', 1, '深度家电清洗、管道开荒,专业设备上门'],
|
||
2006 => ['fc2006', '数码达人·阿豪', '15033443344', '/uploads/avatars/user_2006.png', 1, '自用数码产品转让,品质如新,支持面交验机'],
|
||
2007 => ['fc2007', '优选二手车·赵经理', '13700000000', '/uploads/avatars/user_2007.png', 1, '品质二手私家车,无事故支持第三方检测'],
|
||
2008 => ['wx1a5fb068c3', '琴海飞扬', '13618512779', '/uploads/avatars/user_2008.png', 2, '热爱音乐与摄影,发现贵阳同城美好'],
|
||
2009 => ['wx5d0e3c36ba', '筑城漫步', '13785104643', '/uploads/avatars/user_2009.png', 2, '闲置物品断舍离,环保慢生活'],
|
||
2010 => ['wxc7bb372973', '黔中书虫', '13885106507', '/uploads/avatars/user_2010.png', 1, '书香满屋,同城爱书人常交流'],
|
||
2011 => ['wx40cf7d49bf', '枣王府·王鹏', '18885795042', '/uploads/merchants/m_zaowang.png', 1, '南明区地道餐饮老店,味美价实'],
|
||
2012 => ['wxedc3a78f3a', '黔山行者', '13985106138', '/uploads/avatars/user_default.png', 1, '周末爬山徒步搭子'],
|
||
2025 => ['wxef1d83d35a', '灵秀筑城', '13685106579', '/uploads/avatars/user_default.png', 2, '贵阳本地美食与生活分享'],
|
||
2026 => ['wx0e2dfdf782', '贵山小友', '13785109432', '/uploads/avatars/user_default.png', 1, '摄影搭子与同城骑行'],
|
||
2027 => ['u18386351589', '林晓峰', '18386351589', '/uploads/avatars/user_2027.png', 1, '数码数车爱好者,同城真实发布'],
|
||
2028 => ['wx568d124539', '机车阿超', '18386351589', '/uploads/avatars/user_2028.png', 1, '春风800nk车主,机车骑行交流'],
|
||
];
|
||
|
||
$stmtUpdateUser = $pdo->prepare("UPDATE fa_user SET nickname = :nickname, mobile = :mobile, avatar = :avatar, gender = :gender, bio = :bio, updatetime = :updatetime WHERE id = :id");
|
||
|
||
foreach ($usersConfig as $uid => $cfg) {
|
||
$chk = $pdo->query("SELECT id FROM fa_user WHERE id = $uid")->fetch();
|
||
if ($chk) {
|
||
$stmtUpdateUser->execute([
|
||
':nickname' => $cfg[1],
|
||
':mobile' => $cfg[2],
|
||
':avatar' => $cfg[3],
|
||
':gender' => $cfg[4],
|
||
':bio' => $cfg[5],
|
||
':updatetime' => $now,
|
||
':id' => $uid,
|
||
]);
|
||
echo "已完善用户 ID {$uid} ({$cfg[1]})" . PHP_EOL;
|
||
}
|
||
}
|
||
|
||
// 针对其它遗留未设头像的普通用户,设置默认头像兜底
|
||
$pdo->query("UPDATE fa_user SET avatar = '/uploads/avatars/user_default.png' WHERE avatar IS NULL OR avatar = ''");
|
||
echo "已为其余未设头像的用户填充默认头像。" . PHP_EOL;
|
||
|
||
echo PHP_EOL . "==================================================" . PHP_EOL;
|
||
echo "步骤 2: 修复与补全 fa_fc_user_ext 用户扩展表数据" . PHP_EOL;
|
||
echo "==================================================" . PHP_EOL;
|
||
|
||
// 扩展表配置:user_id => [user_type (1个人 2商家), realname, is_member]
|
||
$extConfig = [
|
||
1001 => [1, '同城小助手', 1],
|
||
1002 => [1, '王梓轩', 0],
|
||
1003 => [2, '陈秀英', 1],
|
||
1004 => [1, '测试员', 0],
|
||
2001 => [2, '杨顺捷', 1],
|
||
2002 => [2, '周安家', 1],
|
||
2003 => [1, '周逸尘', 0],
|
||
2004 => [2, '张车行', 1],
|
||
2005 => [2, '王保洁', 1],
|
||
2006 => [1, '黄子豪', 0],
|
||
2007 => [2, '赵优选', 1],
|
||
2008 => [1, '琴飞飞', 0],
|
||
2009 => [1, '漫小筑', 0],
|
||
2010 => [1, '黔晓书', 0],
|
||
2011 => [2, '王鹏', 1],
|
||
2027 => [1, '林晓峰', 0],
|
||
2028 => [1, '王超', 1],
|
||
];
|
||
|
||
foreach ($extConfig as $uid => $cfg) {
|
||
$ext = $pdo->query("SELECT id FROM fa_fc_user_ext WHERE user_id = $uid")->fetch();
|
||
if ($ext) {
|
||
$stmt = $pdo->prepare("UPDATE fa_fc_user_ext SET user_type = :user_type, realname = :realname, realname_status = 1, is_member = :is_member, updatetime = :now WHERE user_id = :uid");
|
||
$stmt->execute([
|
||
':user_type' => $cfg[0],
|
||
':realname' => $cfg[1],
|
||
':is_member' => $cfg[2],
|
||
':now' => $now,
|
||
':uid' => $uid,
|
||
]);
|
||
} else {
|
||
$stmt = $pdo->prepare("INSERT INTO fa_fc_user_ext (user_id, user_type, realname, realname_status, is_member, post_quota_left, post_quota_expire, createtime, updatetime) VALUES (:uid, :user_type, :realname, 1, :is_member, 10, :expire, :now, :now)");
|
||
$stmt->execute([
|
||
':uid' => $uid,
|
||
':user_type' => $cfg[0],
|
||
':realname' => $cfg[1],
|
||
':is_member' => $cfg[2],
|
||
':expire' => $now + 86400 * 30,
|
||
':now' => $now,
|
||
]);
|
||
}
|
||
echo "已同步扩展资料 user_id: {$uid} (身份: " . ($cfg[0] === 2 ? '商家' : '个人') . ", 实名: {$cfg[1]})" . PHP_EOL;
|
||
}
|
||
|
||
echo PHP_EOL . "==================================================" . PHP_EOL;
|
||
echo "步骤 3: 修复与补全 fa_fc_merchant 商家表档案数据" . PHP_EOL;
|
||
echo "==================================================" . PHP_EOL;
|
||
|
||
// 商家详细配置列表
|
||
$merchantsConfig = [
|
||
2001 => [
|
||
'name' => '顺捷同城物流园',
|
||
'logo' => '/uploads/merchants/m_shunjie.png',
|
||
'banner' => '/static/posts/job-warehouse.jpg',
|
||
'notice' => '专业同城配送、日结货运搬家、冷链中转,全天候随叫随到,高效保质!',
|
||
'recommend' => 1,
|
||
'contact' => '杨经理 13988888888',
|
||
'address' => '贵州省贵阳市南明区富源南路108号顺捷物流园A区',
|
||
'lat' => 26.542100,
|
||
'lng' => 106.732100,
|
||
'category' => '同城货运',
|
||
'license' => '/uploads/merchants/license_default.png',
|
||
'shop_status' => 'normal',
|
||
'audit_status'=> 1,
|
||
],
|
||
2002 => [
|
||
'name' => '安家同城房产置业',
|
||
'logo' => '/uploads/merchants/m_anjia.png',
|
||
'banner' => '/static/posts/house-exterior.jpg',
|
||
'notice' => '贵阳全城真实房源、精装整租/合租、二手房免佣买卖,资深经纪人1对1带看。',
|
||
'recommend' => 1,
|
||
'contact' => '周主管 13566666666',
|
||
'address' => '贵州省贵阳市云岩区北京路128号安家房产置业中心',
|
||
'lat' => 26.598200,
|
||
'lng' => 106.708300,
|
||
'category' => '房产中介',
|
||
'license' => '/uploads/merchants/license_default.png',
|
||
'shop_status' => 'normal',
|
||
'audit_status'=> 1,
|
||
],
|
||
2005 => [
|
||
'name' => '洁净到家品质家政',
|
||
'logo' => '/uploads/merchants/m_jiejing.png',
|
||
'banner' => '/static/posts/clean-window.jpg',
|
||
'notice' => '专业家庭日常保洁、新房开荒保洁、油烟机家电深度拆洗、月嫂育儿,持证上岗。',
|
||
'recommend' => 1,
|
||
'contact' => '王师傅 13156785678',
|
||
'address' => '贵州省贵阳市观山湖区林城东路88号洁净生活馆',
|
||
'lat' => 26.631500,
|
||
'lng' => 106.632800,
|
||
'category' => '家政保洁',
|
||
'license' => '/uploads/merchants/license_default.png',
|
||
'shop_status' => 'normal',
|
||
'audit_status'=> 1,
|
||
],
|
||
1003 => [
|
||
'name' => '洁净到家·云岩服务中心',
|
||
'logo' => '/uploads/merchants/m_jiejing.png',
|
||
'banner' => '/static/posts/clean-bath.jpg',
|
||
'notice' => '云岩老城区快速响应保洁与钟点服务,价格透明,满意后再付款。',
|
||
'recommend' => 1,
|
||
'contact' => '陈姐 13156785678',
|
||
'address' => '贵州省贵阳市云岩区中华北路56号',
|
||
'lat' => 26.589100,
|
||
'lng' => 106.713500,
|
||
'category' => '家政保洁',
|
||
'license' => '/uploads/merchants/license_default.png',
|
||
'shop_status' => 'normal',
|
||
'audit_status'=> 1,
|
||
],
|
||
2004 => [
|
||
'name' => '车行天下名车汇',
|
||
'logo' => '/uploads/merchants/m_chehang.png',
|
||
'banner' => '/static/posts/car-suv-white.jpg',
|
||
'notice' => '精选准新二手私家车、第三方268项专业检测,支持分期置换,一年两万公里质保。',
|
||
'recommend' => 1,
|
||
'contact' => '张总 13800000000',
|
||
'address' => '贵州省贵阳市花溪区花溪大道南段668号车行天下展厅',
|
||
'lat' => 26.438200,
|
||
'lng' => 106.678900,
|
||
'category' => '汽车交易',
|
||
'license' => '/uploads/merchants/license_default.png',
|
||
'shop_status' => 'normal',
|
||
'audit_status'=> 1,
|
||
],
|
||
2007 => [
|
||
'name' => '优选二手车精品馆',
|
||
'logo' => '/uploads/merchants/m_youxuan.png',
|
||
'banner' => '/static/posts/car-sedan-white.jpg',
|
||
'notice' => '专注中高端精品一手二手车,杜绝事故车、泡水车,提供全国联保与免费过户。',
|
||
'recommend' => 1,
|
||
'contact' => '赵经理 13700000000',
|
||
'address' => '贵州省贵阳市观山湖区金阳北路218号优选名车馆',
|
||
'lat' => 26.619800,
|
||
'lng' => 106.621200,
|
||
'category' => '汽车交易',
|
||
'license' => '/uploads/merchants/license_default.png',
|
||
'shop_status' => 'normal',
|
||
'audit_status'=> 1,
|
||
],
|
||
2011 => [
|
||
'name' => '枣王府地道特色餐饮',
|
||
'logo' => '/uploads/merchants/m_zaowang.png',
|
||
'banner' => '/static/posts/job-cafe.jpg',
|
||
'notice' => '传承贵州传统地道风味,精选特色食材,支持堂食聚会与同城订餐配送。',
|
||
'recommend' => 1,
|
||
'contact' => '王鹏 18885795042',
|
||
'address' => '贵州省贵阳市南明区箭道街52号(南明区人民政府南侧)',
|
||
'lat' => 26.568220,
|
||
'lng' => 106.714100,
|
||
'category' => '美食餐饮',
|
||
'license' => '/uploads/merchants/license_default.png',
|
||
'shop_status' => 'normal',
|
||
'audit_status'=> 1,
|
||
],
|
||
];
|
||
|
||
foreach ($merchantsConfig as $uid => $m) {
|
||
$exist = $pdo->query("SELECT id FROM fa_fc_merchant WHERE user_id = $uid")->fetch();
|
||
if ($exist) {
|
||
$stmt = $pdo->prepare("UPDATE fa_fc_merchant SET
|
||
name = :name,
|
||
logo = :logo,
|
||
banner = :banner,
|
||
notice = :notice,
|
||
recommend = :recommend,
|
||
contact = :contact,
|
||
address = :address,
|
||
lat = :lat,
|
||
lng = :lng,
|
||
category = :category,
|
||
license = :license,
|
||
shop_status = :shop_status,
|
||
audit_status = :audit_status,
|
||
updatetime = :now
|
||
WHERE id = :id");
|
||
$stmt->execute([
|
||
':name' => $m['name'],
|
||
':logo' => $m['logo'],
|
||
':banner' => $m['banner'],
|
||
':notice' => $m['notice'],
|
||
':recommend' => $m['recommend'],
|
||
':contact' => $m['contact'],
|
||
':address' => $m['address'],
|
||
':lat' => $m['lat'],
|
||
':lng' => $m['lng'],
|
||
':category' => $m['category'],
|
||
':license' => $m['license'],
|
||
':shop_status' => $m['shop_status'],
|
||
':audit_status'=> $m['audit_status'],
|
||
':now' => $now,
|
||
':id' => $exist['id'],
|
||
]);
|
||
echo "已升级更新商家档案: {$m['name']} (ID: {$exist['id']}, user_id: {$uid})" . PHP_EOL;
|
||
} else {
|
||
$stmt = $pdo->prepare("INSERT INTO fa_fc_merchant (
|
||
user_id, name, logo, banner, notice, recommend, contact, address, lat, lng, category, license, audit_status, shop_status, post_count, createtime, updatetime
|
||
) VALUES (
|
||
:uid, :name, :logo, :banner, :notice, :recommend, :contact, :address, :lat, :lng, :category, :license, :audit_status, :shop_status, 0, :now, :now
|
||
)");
|
||
$stmt->execute([
|
||
':uid' => $uid,
|
||
':name' => $m['name'],
|
||
':logo' => $m['logo'],
|
||
':banner' => $m['banner'],
|
||
':notice' => $m['notice'],
|
||
':recommend' => $m['recommend'],
|
||
':contact' => $m['contact'],
|
||
':address' => $m['address'],
|
||
':lat' => $m['lat'],
|
||
':lng' => $m['lng'],
|
||
':category' => $m['category'],
|
||
':license' => $m['license'],
|
||
':audit_status'=> $m['audit_status'],
|
||
':shop_status' => $m['shop_status'],
|
||
':now' => $now,
|
||
]);
|
||
echo "已补全新增商家档案: {$m['name']} (user_id: {$uid})" . PHP_EOL;
|
||
}
|
||
}
|
||
|
||
echo PHP_EOL . "==================================================" . PHP_EOL;
|
||
echo "步骤 4: 修复与补全 fa_fc_post 帖子信息与身份归属" . PHP_EOL;
|
||
echo "==================================================" . PHP_EOL;
|
||
|
||
// 1. 商家身份列表 (1003, 2001, 2002, 2004, 2005, 2007, 2011)
|
||
$merchantUserIds = [1003, 2001, 2002, 2004, 2005, 2007, 2011];
|
||
$inStr = implode(',', $merchantUserIds);
|
||
|
||
// 将这些商家账号发布的帖子的 identity_type 修正为 2 (商家)
|
||
$stmtMerchantPost = $pdo->query("UPDATE fa_fc_post SET identity_type = 2 WHERE user_id IN ($inStr)");
|
||
$affected = $stmtMerchantPost->rowCount();
|
||
echo "已纠正 {$affected} 条商家帖子的 identity_type 为 2 (商家身份)。" . PHP_EOL;
|
||
|
||
// 其余个人账号 (如 1001, 1002, 2003, 2006, 2008, 2009, 2010, 2027, 2028) 确保为 1 (个人)
|
||
$stmtPersonPost = $pdo->query("UPDATE fa_fc_post SET identity_type = 1 WHERE user_id NOT IN ($inStr)");
|
||
echo "已确认个人帖子的 identity_type 为 1。" . PHP_EOL;
|
||
|
||
// 2. 检查并补全每条帖子的 contact, phone, wechat, address, lat, lng
|
||
$posts = $pdo->query("SELECT p.*, u.nickname, u.mobile FROM fa_fc_post p LEFT JOIN fa_user u ON p.user_id = u.id WHERE p.deletetime IS NULL")->fetchAll(PDO::FETCH_ASSOC);
|
||
|
||
$areaDefaultCoord = [
|
||
'南明区' => [26.568, 106.716, '贵阳市南明区花果园大街'],
|
||
'云岩区' => [26.605, 106.710, '贵阳市云岩区北京路128号'],
|
||
'观山湖区' => [26.625, 106.625, '贵阳市观山湖区金融城金阳北路'],
|
||
'花溪区' => [26.430, 106.670, '贵阳市花溪区花溪大道南段'],
|
||
];
|
||
|
||
$stmtFixPost = $pdo->prepare("UPDATE fa_fc_post SET
|
||
contact = :contact,
|
||
phone = :phone,
|
||
wechat = :wechat,
|
||
address = :address,
|
||
lat = :lat,
|
||
lng = :lng,
|
||
cover = :cover
|
||
WHERE id = :id");
|
||
|
||
$fixedPostCount = 0;
|
||
foreach ($posts as $p) {
|
||
$pid = $p['id'];
|
||
$needUpdate = false;
|
||
|
||
$contact = $p['contact'];
|
||
$phone = $p['phone'];
|
||
$wechat = $p['wechat'];
|
||
$address = $p['address'];
|
||
$lat = $p['lat'];
|
||
$lng = $p['lng'];
|
||
$cover = $p['cover'];
|
||
|
||
// 联系人缺失时按昵称或角色填充
|
||
if (empty($contact) || $contact === '测试') {
|
||
$contact = !empty($p['nickname']) ? $p['nickname'] : '同城房主';
|
||
$needUpdate = true;
|
||
}
|
||
|
||
// 电话缺失时用用户手机号
|
||
if (empty($phone) || $phone === '13000000000') {
|
||
$phone = !empty($p['mobile']) ? $p['mobile'] : '13885108888';
|
||
$needUpdate = true;
|
||
}
|
||
|
||
// 微信缺失时填充微信号
|
||
if (empty($wechat)) {
|
||
$wechat = 'gyfc' . $pid;
|
||
$needUpdate = true;
|
||
}
|
||
|
||
// 地址缺失时填充所在区域代表地址
|
||
$areaKey = !empty($p['area']) ? $p['area'] : '云岩区';
|
||
$def = isset($areaDefaultCoord[$areaKey]) ? $areaDefaultCoord[$areaKey] : $areaDefaultCoord['云岩区'];
|
||
|
||
if (empty($address)) {
|
||
$address = $def[2];
|
||
$needUpdate = true;
|
||
}
|
||
|
||
// 坐标为空时补充默认坐标并带有少许偏移
|
||
if (empty($lat) || empty($lng) || (float)$lat == 0.0) {
|
||
$offset = (($pid % 7) - 3) * 0.004;
|
||
$lat = round($def[0] + $offset, 6);
|
||
$lng = round($def[1] + $offset, 6);
|
||
$needUpdate = true;
|
||
}
|
||
|
||
// 封面缺失时兜底
|
||
if (empty($cover)) {
|
||
$cover = '/static/posts/job-warehouse.jpg';
|
||
$needUpdate = true;
|
||
}
|
||
|
||
if ($needUpdate) {
|
||
$stmtFixPost->execute([
|
||
':contact' => $contact,
|
||
':phone' => $phone,
|
||
':wechat' => $wechat,
|
||
':address' => $address,
|
||
':lat' => $lat,
|
||
':lng' => $lng,
|
||
':cover' => $cover,
|
||
':id' => $pid,
|
||
]);
|
||
$fixedPostCount++;
|
||
}
|
||
}
|
||
echo "已检查并补全 {$fixedPostCount} 条帖子的联系信息、地址与坐标。" . PHP_EOL;
|
||
|
||
echo PHP_EOL . "==================================================" . PHP_EOL;
|
||
echo "步骤 5: 同步商家发帖计数与分类信息计数" . PHP_EOL;
|
||
echo "==================================================" . PHP_EOL;
|
||
|
||
// 1. 同步商家 post_count
|
||
$merchants = $pdo->query("SELECT id, user_id FROM fa_fc_merchant")->fetchAll(PDO::FETCH_ASSOC);
|
||
foreach ($merchants as $m) {
|
||
$c = (int)$pdo->query("SELECT COUNT(*) FROM fa_fc_post WHERE user_id = {$m['user_id']} AND status = 1 AND audit_status = 1 AND deletetime IS NULL")->fetchColumn();
|
||
$pdo->query("UPDATE fa_fc_merchant SET post_count = {$c} WHERE id = {$m['id']}");
|
||
echo "商家 ID {$m['id']} (user_id={$m['user_id']}) 在招/在售有效信息量: {$c}" . PHP_EOL;
|
||
}
|
||
|
||
// 2. 同步分类 post_count
|
||
for ($cid = 1; $cid <= 8; $cid++) {
|
||
$cc = (int)$pdo->query("SELECT COUNT(*) FROM fa_fc_post WHERE category_id = {$cid} AND status = 1 AND audit_status = 1 AND deletetime IS NULL")->fetchColumn();
|
||
$pdo->query("UPDATE fa_fc_category SET post_count = {$cc} WHERE id = {$cid}");
|
||
}
|
||
echo "已成功同步所有 8 个主分类的有效发帖总数。" . PHP_EOL;
|
||
|
||
echo PHP_EOL . "==================================================" . PHP_EOL;
|
||
echo "数据库测试数据修复完毕!" . PHP_EOL;
|
||
echo "==================================================" . PHP_EOL;
|
||
}
|
||
|
||
repairDatabaseData();
|