soselo/classes/PgDatabase.php

60 lines
1.3 KiB
PHP
Raw Normal View History

2022-11-24 22:41:05 +00:00
<?php
class PgDatabase {
private $db = null;
public function __construct() {
$url = trim($_SERVER['REQUEST_URI'], '/');
$url = substr($url, 7); // api/vX/
$ps = explode('/', $url);
if ($ps[0] !== 'database') return;
$software = $ps[1];
2022-11-27 23:54:24 +00:00
$config = instance_config($software);
if ($config === null) return;
$this->db = pg_connect(
' host='.$config['psql_host'].
' port='.$config['psql_port'].
' dbname='.$config['psql_db'].
' user='.$config['psql_username'].
' password='.$config['psql_password'].
'') or apiresult(['error' => 'Could not connect to postgres: '.pg_last_error()], 500);
}
public function is_ok() {
return $this->db !== null;
}
public function escape($str) {
return pg_escape_string($this->db, $str);
}
public function query($sql) {
$result = pg_query($this->db, $sql);
if (!$result) apiresult('The postgres query has failed: '.pg_last_error());
return $result;
}
public function fetch_one($sql) {
$result = $this->query($sql);
return pg_fetch_assoc($result);
}
public function fetch_all($sql) {
$data = [];
$result = $this->query($sql);
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
$data []= $line;
}
pg_free_result($result);
return $data;
}
public function close($result=null) {
if ($result !== null)
pg_free_result($result);
pg_close($this->db);
}
2022-11-24 22:41:05 +00:00
}