db.php 988 B

1234567891011121314151617181920212223242526
  1. <?php
  2. // db.php – shared PDO helper
  3. // Included by every script that needs a database connection.
  4. ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
  5. require_once __DIR__ . '/config.php';
  6. function get_pdo(): PDO {
  7. global $host, $dbname, $username, $password, $charset;
  8. static $pdo = null;
  9. if ($pdo === null) {
  10. $dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
  11. $options = [
  12. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  13. PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  14. PDO::ATTR_EMULATE_PREPARES => false,
  15. ];
  16. try {
  17. $pdo = new PDO($dsn, $username, $password, $options);
  18. } catch (PDOException $e) {
  19. http_response_code(500);
  20. die('<p style="font-family:monospace;color:#c00">Database connection failed: '
  21. . htmlspecialchars($e->getMessage()) . '</p>');
  22. }
  23. }
  24. return $pdo;
  25. }