IT系バンドマンの日常

備忘録やライフログなど

PHP + MySQL + TeraPadでクッソはまった話

こんにちは! さてさて本日は後輩からの質問がありまして丸2日悩んだお話です。。。

本日のお悩み

参考書のソースコードを参考に、MySQLにインサートした画像のバイナリデータをPHPで呼び出してブラウザで表示させたいんだけどうまく画像が表示されない

後輩の実行環境

ふむふむ。なるほど。お兄さんに任せなさい!!!(俺、全然PHP読めねぇ。。。
というわけで昨日質問がありまして、スタートしました今回の課題。

まずは自分のスキルアップも兼ねてコードの仕組みを解剖しつつ自分の環境で動作確認。

ここでお兄さんIDEの素晴らしさに気づくNetBeans最高

なんとか画像データのMySQLへのインサートとブラウザへの出力に成功。

ソースコードが正常に動くということは後輩のソースコードor実行環境に問題があるはず!
というわけで早速ですが検証結果です。

原因まとめ

  1. MySQL文字コードUTF-8に設定されていなかったので、my.iniを編集して対応
  2. PHPソースコードに文法ミスがあった
  3. デフォルト設定のTeraPadで編集していたため、文字コードの設定がBOMありのUTF-8になっていた

www.php-factory.net

なぬっ!まさかTeraPadに問題が隠されていたとは。。。詳しくは今回参考にしたURLをご覧ください。Webでは基本BOMなしのUTF-8を使っている。なるほど勉強になりました!これからこの手の質問があったときは真っ先に文字コード近辺を疑おうかと考えております。

本日のまとめ

Web屋さんはBOMに気をつけよう