From 09cda8862f59f25918c64477d829e46acfc676cb Mon Sep 17 00:00:00 2001 From: Connor Thomson Date: Sun, 20 Sep 2026 18:40:35 -0700 Subject: Seperate some of the php files --- php/database.php | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 php/database.php (limited to 'php/database.php') diff --git a/php/database.php b/php/database.php new file mode 100644 index 0000000..e84ded3 --- /dev/null +++ b/php/database.php @@ -0,0 +1,70 @@ +. + */ + +function database(): PDO { + static $pdo = null; + + if ($pdo !== null) { + return $pdo; + } + + $host = '127.0.0.1'; + $name = 'gnufaultdb'; + $user = 'gnufaultdb_user'; + $password = trim(file_get_contents('/etc/gnufault.d/password')); + $charset = 'utf8mb4'; + + $dsn = "mysql:host=$host;dbname=$name;charset=$charset"; + + $options = [ + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::ATTR_EMULATE_PREPARES => false + ]; + + try { + $pdo = new PDO($dsn, $user, $password, $options); + } catch (\PDOException $e) { + throw new \PDOException($e->getMessage(), (int)$e->getCode()); + } + + return $pdo; +} + +function query(string $sql, array $parameters = []): PDOStatement { + $statement = database()->prepare($sql); + + $statement->execute($parameters); + + return $statement; +} + +function fetch_row(string $sql, array $parameters = []): ?array { + $row = query($sql, $parameters)->fetch(); + + return $row === false ? null : $row; +} + +function insert_row(string $sql, array $parameters = []): int { + query($sql, $parameters); + + return (int)database()->lastInsertId(); +} + +?> -- cgit v1.2.3