Created
December 2, 2022 21:29
-
-
Save arcanisgk/031bc8018c553cd041b7d8513b837da8 to your computer and use it in GitHub Desktop.
new method
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
new method |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class DataBase | |
{ | |
private static ?DataBase $instance = null; | |
public static function getInstance(): DataBase | |
{ | |
if (!self::$instance instanceof self) { | |
self::$instance = new self(); | |
} | |
return self::$instance; | |
} | |
private array $config; | |
public function __construct() | |
{ | |
$this->config = ['DB_HOST'=>'test','DB_NAME'=>'test','DB_USER'=>'test','DB_PASSWORD'=>'']; | |
$this->setConnection(new PDO("mysql:host=" . $this->config['DB_HOST'] . ";dbname=" . $this->config['DB_NAME'], $this->config['DB_USER'], $this->config['DB_PASSWORD'])); | |
} | |
private PDO $connection; | |
/** | |
* @return PDO | |
*/ | |
private function getConnection(): PDO | |
{ | |
return $this->connection; | |
} | |
/** | |
* @param PDO $connection | |
*/ | |
private function setConnection(PDO $connection): void | |
{ | |
$this->connection = $connection; | |
} | |
public function changeConnectionServer(string $host, string $db_name, string $user, string $password): void | |
{ | |
$this->setConnection(new PDO("mysql:host=" . $host . ";dbname=" . $db_name, $user, $password)); | |
} | |
private array $query; | |
public function setDataBaseTarget(string $db_name) | |
{ | |
if (empty($this->query)) { | |
$this->query = []; | |
} | |
$this->query[$db_name] = []; | |
} | |
public function buildQuery(string $query) | |
{ | |
if (empty($this->query)) { | |
$this->query = []; | |
$this->query[$this->config['DB_NAME']] = []; | |
} | |
$target = array_key_last($this->query); | |
$this->query[$target][] = [$query]; | |
} | |
public function addQueryData($data) | |
{ | |
$target = array_key_last($this->query); | |
$key = array_key_last($this->query[$target]); | |
$this->query[$target][$key][] = $data; | |
} | |
private function getQuery(): array | |
{ | |
return $this->query; | |
} | |
/** | |
* @throws Exception | |
*/ | |
public function setData(): array | |
{ | |
try { | |
$time = -microtime(true); | |
$con = $this->getConnection(); | |
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | |
$con->beginTransaction(); | |
$con->exec("set names utf8;"); | |
foreach ($this->getQuery() as $db_name => $query_arr) { | |
$con->exec('USE `' . $db_name . '`;'); | |
$ct = 0; | |
// on this section have proble with code and logic .... i dont know what i need to dev to insert the data | |
foreach ($query_arr as $query_structure) { | |
foreach ($query_structure as $key => $raw) { | |
if ($key === 0) { | |
$ct++; | |
$stmt[$ct] = $con->prepare($raw); | |
} else { | |
if (is_array($raw)) { | |
$c = 0; | |
foreach ($raw as $value) { | |
$c++; | |
$stmt[$ct]->bindValue($c, $value, $this->getParamType($value)); | |
} | |
} | |
} | |
} | |
$stmt[$ct]->execute(); | |
} | |
//end section | |
} | |
//$con->commit(); | |
return true; | |
} catch (PDOException $e) { | |
$con->rollback(); | |
echo $e->getMessage(); | |
return false; | |
} | |
} | |
private function getParamType($value) | |
{ | |
if (is_int($value)) { | |
return PDO::PARAM_INT; | |
} elseif (is_bool($value)) { | |
return PDO::PARAM_BOOL; | |
} elseif (is_null($value)) { | |
return PDO::PARAM_NULL; | |
} elseif (is_string($value)) { | |
return PDO::PARAM_STR; | |
} else { | |
return false; | |
} | |
} | |
} | |
$db_handler = new DataBase(); | |
$db_handler->buildQuery("INSERT INTO `client_list`(`email`,`mobile`) VALUES ('?','?');"); | |
$db_handler->addQueryData(['mail1@test.com', '35634634636546']); | |
$db_handler->addQueryData(['mail2@test.com', '35634634636546']); | |
$db_handler->addQueryData(['mail3@test.com', '35634634636546']); | |
$db_handler->setData(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment