こんにちは! Senです![]()
今日も元気にブログ更新していきます!
見出しにあるようにPDO(PHP Data Object)で苦戦したところについて皆さんに共有しようと思います。
PHP、DB、 SQL研修を終えて、PDOを使って簡単な動的サイトを作ろうと思いました。
動的サイトといっても、CRUD機能を付加してログイン機能付けるだけですが...
HTMLのinputタグから受け取った情報をphpmyadminのテーブルに直接INSERTしようと考え、
ググっていたらどうやらPDOという便利なメソッド?があったので使ってみたんです。
するとなーーーーんとエラーも出ずに、一発で画面遷移が完了したんです!!
才能??
そしてテーブル確認![]()
....あれ?
レコードにINSERTしたはずの情報が何も入ってない??
エラーも出てないのになんでだよーーーーっと3時間くらいネットで調べまくりました。
Qiitaやteratailで同じような悩みの人がいていくつか回答があるんですが、解決済みがなかなか見つからず本当に困りました。
自分で解決するしかないと思い、プリペアードステートメントをなんども見直したり、
PDOの引数を確認したんですが、見つけられず途方に暮れていました。
そこで同僚の凄腕エンジニアに見てもらいました笑
鼻くそエンジニアのSenには気づかない事に天才エンジニアは気付きました。
そう!!!!!!
PDOの第一引数に指定しているPDO_DSNにいくつもの半角スペースがある事に!!!!
下記のコードをご覧ください。
=============================================================
define('PDO_DSN', 'mysql:dbname = '.DATABASE_NAME.';host = '.DATABASE_HOST.'charset = utf8');
=============================================================
どうやらデータベース接続分であるこの部分は非常に書き方が厳格に決まっていて半角スペースなんか入れようものなら正常に動作しないようです。
つい入れちゃうんですよ。 =の前後に半角スペース![]()
書き直して更新!!!
DBはと言いますと...!!!!
しっかり更新されていました。
いやー練習で気づいて本当に良かった。
〜結論〜
PDO_DSNには半角スペース入れるべからず
これからも精進していきます。
それではアディオス![]()