404 - Page Not Found'; echo 'The requested resource could not be found but may be available in the future.'; die(); } function connectDatabase(array $config): PDO { if (!empty($config['database']['socket'])) { $connect = 'mysql:unix_socket=' . $config['database']['socket']; } else { $connect = 'mysql:host=' . $config['database']['hostname']; if (!empty($config['database']['port'])) { $connect .= ';port=' . $config['database']['port']; } } if (!empty($config['database']['charset'])) { $connect .= ';charset=' . $config['database']['charset']; } $connect .= ';dbname=' . $config['database']['database']; try { $connection = @new PDO($connect, $config['database']['username'], $config['database']['password'], [PDO::ATTR_PERSISTENT => false]); $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); } catch (PDOException $e) { $connection = null; } return $connection; } function selectFirst(PDO $connection, $query, $parameters = []): ?array { if (!$stmt = $connection->prepare($query)) { return null; } foreach (array_keys($parameters) as $param) { $data_type = PDO::PARAM_STR; if (is_int($parameters[$param])) { $data_type = PDO::PARAM_INT; } elseif ($parameters[$param] !== null) { $parameters[$param] = (string)$parameters[$param]; } $stmt->bindParam($param + 1, $parameters[$param], $data_type); } if (!$stmt->execute()) { return null; } $columns = $stmt->fetch(PDO::FETCH_ASSOC); $stmt->closeCursor(); if (!is_array($columns)) { return null; } return $columns; } ?>