public static function testConfig($dsnTest) { $fw = \Base::instance(); // Options $options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_PERSISTENT => TRUE); if ($fw['POST.new.db5.driver'] == "mysql") { $options5 = $options + [\PDO::MYSQL_ATTR_COMPRESS => TRUE]; } else { $options5 = $options; } if ($fw['POST.new.db3.driver'] == "mysql") { $options += [\PDO::MYSQL_ATTR_COMPRESS => TRUE]; } // MySQL-specific attribute foreach ($dsnTest as $server => $dsn) { if ($dsn == NULL) { $test[$server] = 1; } else { // reset connection unset($dbTest); // Test db connection try { $dbTest = new \DB\SQL($dsn, $fw["POST.new.{$server}.user"], $fw["POST.new.{$server}.pass"], $options); $test[$server] = 2; if ($server == "db5") { try { $dbTest->exec('SELECT 1 FROM `' . $fw['POST.new.db5.dbname'] . '`.`' . $fw['POST.new.db5.prefix'] . 'config`'); echo $dbTest->count() . "xxxx"; $test[$server] = 3; } catch (PDOException $e) { echo "nichts"; $test[$server] = 2; $fw['POST.new.db5.error'] = $e->getMessage(); } } elseif ($server == "db3") { $probeSQL = "SELECT `tableprefix`, `sitekey`, `sitename` \r\n\t\t\t\t\t\t\t\t\t\tFROM `{$fw['POST.new.db3.dbname']}`.`{$fw['POST.new.db3.settings']}fanfiction_settings`"; if ($fw['POST.new.db3.sitekey'] > "") { try { $probe = $dbTest->exec($probeSQL . " WHERE `sitekey` LIKE :sitekey", [':sitekey' => $fw['POST.new.db3.sitekey']]); $test['data'] = 2; if ($dbTest->count() !== 1) { $test[1] = 1; } } catch (PDOException $e) { $test['data'] = 0; } } else { try { $probe = $dbTest->exec($probeSQL); if ($dbTest->count() === 1) { $test['data'] = 2; $fw['POST.new.db3.sitekey'] = $probe[0]['sitekey']; } else { $test['data'] = 1; } } catch (PDOException $e) { $test['data'] = 0; } } if ($test['data'] == 2) { $fw['POST.new.db3_prefix'] = $probe[0]['tableprefix']; $fw['POST.new.data.sitename'] = $probe[0]['sitename']; } } // probe for supported charset (MySQL only) if ($fw["POST.new.{$server}.driver"] == "mysql") { try { $dbTest->query("SET NAMES 'UTF8MB4'"); $fw["POST.new.{$server}.charset"] = "UTF8MB4"; } catch (PDOException $e) { $fw["POST.new.{$server}.charset"] = "UTF8"; } } } catch (PDOException $e) { echo $server; $test[$server] = 0; $fw["POST.new.error.{$server}"] = $e->getMessage(); $fw["POST.new.{$server}.charset"] = ""; } } } return $test; }