[PHP&MySQL]PDOによるDB接続
久々にはまりました。
PDOによるDB接続のコードはこんな感じ。
$dsn = “mysql: host=HostName; dbname=DbName; charset=utf8”;
$options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false);
$pdo = new PDO($dsn, “UserName”, “Password”, $options);
ローカルXAMPP上では問題なく、DB接続できました。
これをレンタルサーバ上に持っていくと・・・ DB接続できない。
以下、エラー。
SQLSTATE[28000] [1045] Access denied for user ‘xxxxx’@’localhost’ (using password: YES)’ in /home/xxx/public_html/xxx/xxxxx.php
ホスト名やユーザ、パスワードを何度も確認。ネットを調べ、何度もコードを書き直し、挙句、レンタルサーバ屋さんに問い合わせたが分からず。
諦め気分遊び半分で、テレビ見ながら、「変な文字でも紛れ込んでいるのかなぁ」 と、上のコードを手入力し直して実行してみると ! 「つながった !!」
よく調べてみると、DSNの “mysql:” と “host=” の間に1文字空白があったのだが、これを削除したらDB接続できた。何という・・・。しばらく言葉が出ない。丸1日調べて、結果がこれ???
ホスト名、DB名の間の区切り文字 “;” の後ろの空白は問題ないみたい。
よそ見しながらコードを打ち直したとき、空白1文字を打ち忘れ、そのため原因が分かりました。ローカルの XAMPP 上では何の問題もなかったし気づかなかったなぁ。
何ですか、これ、バージョンの違いとか、そういうやつですか???
Fatal error: Allowed memory size of 209715200 bytes exhausted (tried to allocate 31457360 bytes) in /home/avanju/avanju.com/public_html/system/wp/wp-includes/class-walker-comment.php on line 196