54 lines
1.6 KiB
PHP
54 lines
1.6 KiB
PHP
<?php
|
|
// api/config/database.php
|
|
|
|
mysqli_report(MYSQLI_REPORT_OFF);
|
|
|
|
if (!function_exists('loadDatabaseConfig')) {
|
|
function loadDatabaseConfig(): array {
|
|
$config = [
|
|
'host' => getenv('DB_HOST') ?: '127.0.0.1',
|
|
'user' => getenv('DB_USER') ?: 'root',
|
|
'pass' => getenv('DB_PASS') ?: '',
|
|
'name' => getenv('DB_NAME') ?: 'webgis_poverty',
|
|
'port' => (int)(getenv('DB_PORT') ?: 3306),
|
|
'charset' => getenv('DB_CHARSET') ?: 'utf8mb4',
|
|
];
|
|
|
|
$localConfigFile = __DIR__ . '/database.local.php';
|
|
if (is_file($localConfigFile)) {
|
|
$localConfig = require $localConfigFile;
|
|
if (is_array($localConfig)) {
|
|
$config = array_merge($config, array_intersect_key($localConfig, $config));
|
|
}
|
|
}
|
|
|
|
return $config;
|
|
}
|
|
}
|
|
|
|
$dbConfig = loadDatabaseConfig();
|
|
|
|
define('DB_HOST', $dbConfig['host']);
|
|
define('DB_USER', $dbConfig['user']);
|
|
define('DB_PASS', $dbConfig['pass']);
|
|
define('DB_NAME', $dbConfig['name']);
|
|
define('DB_PORT', (int)$dbConfig['port']);
|
|
define('DB_CHARSET', $dbConfig['charset']);
|
|
|
|
function getDB(): mysqli {
|
|
static $conn = null;
|
|
if ($conn === null) {
|
|
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT);
|
|
if ($conn->connect_error) {
|
|
error_log('DB connection failed: ' . $conn->connect_error);
|
|
http_response_code(500);
|
|
echo json_encode([
|
|
'status' => 'error',
|
|
'message' => 'Koneksi database gagal'
|
|
]);
|
|
exit;
|
|
}
|
|
$conn->set_charset(DB_CHARSET);
|
|
}
|
|
return $conn;
|
|
} |