Toimii mutta, onko tämä kieliopillisesti oikea ratkaisu merkistön asettamiseksi, eli 'charset=UTF-8' ja 'SET NAMES utf8'?
//$this->dbConfigs["charset"] on 'UTF-8' private function connect() { try { $this->connection = new PDO($this->dbConfigs["type"] . ":host=" . $this->dbConfigs["host"] . ";dbname=" . $this->dbConfigs["db"] . ";charset=" . $this->dbConfigs["charset"] , $this->dbConfigs["username"], $this->dbConfigs["password"], array( PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true )); $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); if(strtolower(str_replace("-", "", $this->dbConfigs["charset"])) == "utf8") $this->connection->query("SET NAMES utf8"); } catch (PDOException $e) { throw new lucid_exception($e->getMessage(), 5, $e); } }
Ota query("SET NAMES utf8") pois.
En muista lonkalta syökö DSN charsetin tuossa muodossa "UTF-8" mikä sinulla on käytössä, mutta luulen että ei. Muuta se muotoon "utf8".
Ja kannattaa pitää mielessä että PDO mysql oletuksena emuloi preparet, mikä jotaa tietyissä tilanteissa injektioon. Tuo kannattanee disabloida:
setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
Aihe on jo aika vanha, joten et voi enää vastata siihen.