PHPで「SQLSTATE[HY000] [2019] Unknown character set」が出た時の対処法

PHPで「SQLSTATE[HY000] [2019] Unknown character set」が出た時の対処法

560 回閲覧されました

みなさんこんにちは、jonioです。

生のPHPで作ったページでログインをした時に「SQLSTATE[HY000] [2019] Unknown character set」のエラーが表示されました。

「character set」が自分の中で引っかかったのですが「文字コード」を使っているのはPDOしかない状態でした。

そこでPDOが入っているファイルのコードを見直しました。

下記になります。

<?php
    class connect{
        const DB_NAME = "blog";
        const HOST = "localhost";
        const USER = "user";
        const PASS = "pass";

        private $dbh;

        public function __construct(){
            $dsn = "mysql:host=".self::HOST.";dbname=".self::DB_NAME.";charset=ftf8mb4";
            try{
                $this->dbh = new PDO($dsn, self::USER, self::PASS);
            }catch(Exception $e){
                exit($e->getMessage());
            }
            $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
        }

        public function query($sql, $param = null){
            $stmt = $this->dbh->prepare($sql);

            $stmt->execute($param);

            return $stmt;
        }
    }
?>

8行目にcharasetがありますが値は「ftf8mb4」になっています。

こんな値はないですよね、正解は「utf8mb4」です。

これに変えたら今回のエラーは無くなりました。