\PDO::CASE_LOWER, PDO::ATTR_CURSOR => \PDO::CURSOR_FWDONLY, PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, ); return new PDO("pgsql:host={$HOST} port={$PORT} dbname={$DBNAME}",$USER,$PASSWORD,$options); } } function getOne( $pdo, $sql, $params = array() ) { $stm = $pdo->prepare($sql); $stm->execute($params); return $stm->fetchColumn(); } function getRow( $pdo, $sql, $params = array() ) { $stm = $pdo->prepare($sql); $stm->execute($params); return $stm->fetch(\PDO::FETCH_ASSOC); } function getAll( $pdo, $sql, $params = array() ) { $stm = $pdo->prepare($sql); $stm->execute($params); return $stm->fetchAll(\PDO::FETCH_ASSOC); } function select( $pdo, $sql, $params = array() ) { return getAll($pdo,$sql,$params); } function query( $pdo, $sql, $params = array() ) { $stm = $pdo->prepare($sql); $stm->execute($params); return $stm; } function execute( $pdo, $sql, $params = array() ) { $stm = $pdo->prepare($sql); return $stm->execute($params); } function reg( $pdo, $table, $params, $pkey ) { $insert_params = array(); $update_columns = array(); $update_condition = array(); $update_params = array(); $placeholders = array(); foreach ($params as $col => $val) { $mark = $col[0]; if (in_array($mark,array('!',':','?'))) $col = substr($col,1); $params[$col] = $val; if (('' == $val) && (('!' == $mark) || (':' != $mark))) { list($mark,$val) = array('!','NULL'); } if ('!' == $mark) { $insert_params[$col] = $val; $update_columns[] = "{$col}={$val}"; } else { $insert_params[$col] = ":{$col}"; $update_columns[] = "{$col}=:{$col}"; $placeholders[":{$col}"] = $val; } } foreach ($pkey as $col) { $update_condition[] = "{$col}=:PK{$col}"; $update_params[":PK{$col}"] = isset($params[$col]) ? $params[$col] : ''; } $update_condition = implode(' AND ',$update_condition); $sql = "UPDATE {$table} SET ".implode(',',$update_columns)." WHERE {$update_condition}"; if (false === getOne($pdo,"SELECT 1 FROM {$table} WHERE {$update_condition}",$update_params)) { $update_params = []; $sql = "INSERT INTO {$table} (".implode(",",array_keys($insert_params)).") VALUES (".implode(',',array_values($insert_params)).")"; } execute($pdo,$sql,array_merge($placeholders,$update_params)); } function begin( $pdo ) { execute($pdo,'begin'); } function commit( $pdo ) { execute($pdo,'commit'); } function rollback( $pdo ) { execute($pdo,'rollback'); } class EzDB { public static $EzDB; public $pdo; public static function connect() { if (is_null(self::$EzDB)) { self::$EzDB = new EzDB; self::$EzDB->pdo = connect(); self::$EzDB->pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,false); } return self::$EzDB; } public function getOne( $sql, $params = array() ) { return getOne($this->pdo,$sql,$params); } public function getRow( $sql, $params = array() ) { return getRow($this->pdo,$sql,$params); } public function getAll( $sql, $params = array() ) { return getAll($this->pdo,$sql,$params); } public function select( $sql, $params = array() ) { return select($this->pdo,$sql,$params); } public function query( $sql, $params = array() ) { return query($this->pdo,$sql,$params); } public function execute( $sql, $params = array() ) { return execute($this->pdo,$sql,$params); } public function reg( $table, $params, $pkey ) { reg($this->pdo,$table,$params,$pkey); return $this; } public function begin() { begin($this->pdo); return $this; } public function commit() { commit($this->pdo); return $this; } public function rollback() { rollback($this->pdo); return $this; } }