From 35188860cee0828521ed58f70e5890a7b35f69b8 Mon Sep 17 00:00:00 2001 From: Gregory Letellier Date: Tue, 14 Nov 2023 16:41:09 +0100 Subject: [PATCH] gestion du charset en mysql --- src/Connection.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Connection.php b/src/Connection.php index 231428d..ee4c382 100644 --- a/src/Connection.php +++ b/src/Connection.php @@ -18,6 +18,7 @@ class Connection private string $database; private ?string $port; private ?string $host; + private ?string $charset; private string $error; private function __construct($name, $config) @@ -44,6 +45,7 @@ class Connection $this->password = isset($config[$key]["PASSWORD"]) ? $config[$key]["PASSWORD"] : null; $this->database = isset($config[$key]["DATABASE"]) ? $config[$key]["DATABASE"] : null; $this->port = isset($config[$key]["PORT"]) ? $config[$key]["PORT"] : null; + $this->charset = isset($config[$key]["CHARSET"]) ? $config[$key]["CHARSET"] : null; } catch (\Throwable $th) { $this->error = $th->getMessage(); } @@ -70,6 +72,7 @@ class Connection $this->password = isset($_ENV[$this->getKey("PASSWORD", $key)]) ? $_ENV[$this->getKey("PASSWORD", $key)] : null; $this->database = isset($_ENV[$this->getKey("DATABASE", $key)]) ? $_ENV[$this->getKey("DATABASE", $key)] : null; $this->port = isset($_ENV[$this->getKey("PORT", $key)]) ? $_ENV[$this->getKey("PORT", $key)] : null; + $this->charset = isset($_ENV[$this->getKey("CHARSET", $key)]) ? $_ENV[$this->getKey("CHARSET", $key)] : null; } catch (\Throwable $th) { $this->error = $th->getMessage(); } @@ -117,10 +120,19 @@ class Connection return $stmt; } + private function getMySQLOptions() + { + $ret = ""; + if ($this->charset) { + $ret .= ";charset=" . $this->charset; + } + return $ret; + } + private function getConnString() { $this->connstring = match ($this->type) { - "mysql" => "mysql:host=" . $this->host . ":" . $this->port . ";dbname=" . $this->database, + "mysql" => "mysql:host=" . $this->host . ":" . $this->port . ";dbname=" . $this->database . $this->getMySQLOptions() , "sqlite" => "sqlite:" . $this->database, }; }