setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sqlFile = 'D:/Projects/phpstudy_pro/WWW/yjyf/db/schema_phase11_menu_reorganize_qibing.sql'; if (!file_exists($sqlFile)) { die("Error: SQL file not found: $sqlFile\n"); } $sqlContent = file_get_contents($sqlFile); $statements = array_filter(array_map('trim', explode(';', $sqlContent))); echo "========================================================\n"; echo " 优匠优服 · 执行 Phase 11 菜单与大盘数据库配置脚本\n"; echo " 文件路径: $sqlFile\n"; echo "========================================================\n\n"; $step = 1; foreach ($statements as $st) { if (empty($st) || strpos($st, '--') === 0) continue; try { $affected = $pdo->exec($st); $preview = str_replace(["\r", "\n", " "], [" ", " ", " "], substr($st, 0, 75)); echo "[步骤 {$step}] 执行成功 (受影响行数: $affected) -> {$preview}...\n"; $step++; } catch (Exception $e) { echo "[步骤 {$step}] 执行失败: " . $e->getMessage() . "\n"; die("终止执行。\n"); } } echo "\n========================================================\n"; echo " SQL 执行完毕!当前数据库菜单层级验证:\n"; echo "========================================================\n"; $rules = $pdo->query("SELECT id, pid, name, title, icon, weigh, ismenu FROM fa_auth_rule WHERE ismenu = 1 ORDER BY weigh DESC, id ASC")->fetchAll(PDO::FETCH_ASSOC); function displayTree($rules, $pid = 0, $depth = 0) { foreach ($rules as $r) { if ($r['pid'] == $pid) { echo str_repeat(" ", $depth) . "├── [ID:{$r['id']}] {$r['title']} (name: {$r['name']}, icon: {$r['icon']}, weigh: {$r['weigh']})\n"; displayTree($rules, $r['id'], $depth + 1); } } } displayTree($rules); echo "\n========================================================\n"; echo " 系统配置项验证 (fa_config.fixedpage):\n"; echo "========================================================\n"; $fixedpage = $pdo->query("SELECT name, title, value FROM fa_config WHERE name = 'fixedpage'")->fetch(PDO::FETCH_ASSOC); print_r($fixedpage); echo "\n全部 SQL 执行并校验成功!\n";