Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PDO merkistö

qeijo [11.10.2012 13:01:23]

#

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);
        }
    }

timoh [11.10.2012 13:59:36]

#

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);

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta