PDO::ERRMODE_EXCEPTION, PDO::ATTR_TIMEOUT => 5]); $result = ['connected' => true, 'read_only_probe' => true]; foreach (['admin', 'system_role', 'system_menu', 'dept', 'admin_role', 'admin_dept', 'admin_jobs', 'admin_session'] as $table) { $columns = $pdo->query('SHOW COLUMNS FROM `' . $prefix . $table . '`')->fetchAll(PDO::FETCH_COLUMN); $where = in_array('delete_time', $columns, true) ? ' WHERE delete_time IS NULL' : ''; $result['tables'][$table] = ['count' => (int) $pdo->query('SELECT COUNT(*) FROM `' . $prefix . $table . '`' . $where)->fetchColumn(), 'columns' => $columns]; } $result['navigation_candidates'] = $pdo->query("SELECT id,type,name,perms,paths,component,is_disable FROM `{$prefix}system_menu` WHERE component IN ('permission/admin/index','permission/role/index','permission/menu/index','organization/department/index') OR perms IN ('auth.admin/lists','auth.role/lists','auth.menu/lists','dept.dept/lists')")->fetchAll(PDO::FETCH_ASSOC); echo json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . PHP_EOL; } catch (Throwable $error) { echo json_encode(['connected' => false, 'error_code' => (string) $error->getCode(), 'message' => 'Project database probe failed; credentials were not printed.']) . PHP_EOL; exit(1); }