134 lines
2.9 KiB
PHP
134 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace Driver;
|
|
|
|
class SQL {
|
|
|
|
public $connection;
|
|
public $lastError;
|
|
private $connectionData;
|
|
|
|
public function __construct($connectionData) {
|
|
$this->connection = NULL;
|
|
$this->lastError = 'Not connected';
|
|
$this->connectionData = $connectionData;
|
|
}
|
|
|
|
public function connect() {
|
|
if(!is_null($this->connection))
|
|
return true;
|
|
|
|
@$this->connection = mysqli_connect(
|
|
$this->connectionData->getHost(),
|
|
$this->connectionData->getLogin(),
|
|
$this->connectionData->getPassword(),
|
|
$this->connectionData->getProperty('database'),
|
|
$this->connectionData->getPort()
|
|
);
|
|
|
|
if (mysqli_connect_errno($this->connection)) {
|
|
$this->lastError = "Failed to connect to MySQL: " . mysqli_connect_error();
|
|
$this->connection = NULL;
|
|
return false;
|
|
}
|
|
|
|
mysqli_set_charset($this->connection, $this->connectionData->getProperty('encoding'));
|
|
return true;
|
|
}
|
|
|
|
public function disconnect() {
|
|
if(is_null($this->connection))
|
|
return;
|
|
|
|
mysqli_close($this->connection);
|
|
$this->connection = NULL;
|
|
}
|
|
|
|
public function isConnected() {
|
|
return !is_null($this->connection);
|
|
}
|
|
|
|
public function getLastError() {
|
|
return empty(trim($this->lastError)) ? mysqli_error($this->connection) . " " . $this->getLastErrorNumber() : trim($this->lastError);
|
|
}
|
|
|
|
public function setLastError($str) {
|
|
$this->lastError = $str;
|
|
}
|
|
|
|
public function getLastErrorNumber() {
|
|
return mysqli_errno($this->connection);
|
|
}
|
|
|
|
public function getLastInsertId() {
|
|
return $this->connection->insert_id;
|
|
}
|
|
|
|
public function close() {
|
|
if(!is_null($this->connection)) {
|
|
$this->connection->close();
|
|
}
|
|
}
|
|
|
|
public function getAffectedRows() {
|
|
return $this->connection->affected_rows;
|
|
}
|
|
|
|
public function execute($query) {
|
|
if(!$this->isConnected()) {
|
|
return false;
|
|
}
|
|
|
|
if(!mysqli_query($this->connection, $query)) {
|
|
$this->lastError = mysqli_error($this->connection);
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public function executeMulti($queries) {
|
|
if(!$this->isConnected()) {
|
|
return false;
|
|
}
|
|
|
|
if(!$this->connection->multi_query($queries)) {
|
|
$this->lastError = mysqli_error($this->connection);
|
|
return false;
|
|
}
|
|
|
|
while (($success = $this->connection->next_result())) {
|
|
if (!$this->connection->more_results()) break;
|
|
}
|
|
|
|
if(!$success) {
|
|
$this->lastError = mysqli_error($this->connection);
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public function query($query) {
|
|
if(!$this->isConnected()) {
|
|
return false;
|
|
}
|
|
|
|
$res = mysqli_query($this->connection, $query);
|
|
if(!$res) {
|
|
$this->lastError = mysqli_error($this->connection);
|
|
return false;
|
|
}
|
|
|
|
return $res;
|
|
}
|
|
|
|
public static function createConnection($connectionData) {
|
|
$sql = new SQL($connectionData);
|
|
$sql->connect();
|
|
return $sql;
|
|
}
|
|
}
|
|
|
|
?>
|