From 011dab19bcbd8000a888a4a10f7c719e3685fb77 Mon Sep 17 00:00:00 2001 From: Dennis Kraffczyk Date: Sat, 14 Feb 2026 14:37:43 +0100 Subject: [PATCH] Use the real installation number instead of hardcoded The parameters of the condition builder are not replaced by `WCF::getDB()->prepare()` during statement preparation. --- .../install/files/lib/acp/page/SystemCheckPage.class.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/wcfsetup/install/files/lib/acp/page/SystemCheckPage.class.php b/wcfsetup/install/files/lib/acp/page/SystemCheckPage.class.php index 79940d6986..4d8b8c7153 100644 --- a/wcfsetup/install/files/lib/acp/page/SystemCheckPage.class.php +++ b/wcfsetup/install/files/lib/acp/page/SystemCheckPage.class.php @@ -4,6 +4,7 @@ use wcf\data\application\Application; use wcf\page\AbstractPage; +use wcf\system\application\ApplicationHandler; use wcf\system\database\util\PreparedStatementConditionBuilder; use wcf\system\Environment; use wcf\system\exception\SystemException; @@ -300,9 +301,13 @@ protected function validateMysql() foreach ($keys as $column => $reference) { $innerConditionBuilder = new PreparedStatementConditionBuilder(false); $innerConditionBuilder->add('REFERENCED_TABLE_SCHEMA = ?', [WCF::getDB()->getDatabaseName()]); - $innerConditionBuilder->add('REFERENCED_TABLE_NAME = ?', [$reference['referenceTable']]); + $innerConditionBuilder->add('REFERENCED_TABLE_NAME = ?', [ + ApplicationHandler::insertRealDatabaseTableNames($reference['referenceTable']) + ]); $innerConditionBuilder->add('REFERENCED_COLUMN_NAME = ?', [$reference['referenceColumn']]); - $innerConditionBuilder->add('TABLE_NAME = ?', [$table]); + $innerConditionBuilder->add('TABLE_NAME = ?', [ + ApplicationHandler::insertRealDatabaseTableNames($table) + ]); $innerConditionBuilder->add('COLUMN_NAME = ?', [$column]); $conditionBuilder->add('(' . $innerConditionBuilder . ')', $innerConditionBuilder->getParameters());