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.