PHPでMySQLに接続する

公開:2014-11-03 / 制作・開発 / ,
更新:2016-03-24
icatch_mysql

仕事で久しぶりにデータベースを利用する必要があったのですが、いろいろ忘れてたので備忘録を残そうと思います。

 

普段はプロジェクトマネージャー、またはディレクターでお仕事してるので、プログラムを開発することもないのですが、ちょうどかかわっている案件が落ち着いたのでひょんなことからエンジニア作業を手伝うことになりました。

 

僕自身、そのエンジニアには何度も助けてもらったので、「困ったときはお互い様」の精神で引き受けたのですが、いやー、これがまた大変でした。。。

 

何が大変て、そりゃもう

 

完全に忘れてる。。。。

 

わけですよ。ヤバイくらいに。

 

普通にPHPでちょっとしたプログラムを書くくらいなら問題ないのですが、データベースは完全に忘れてましたね。

そんなわけでまずは、PHPを使ってMySQLの接続についてメモを残します。(そこからかよっ)

 

PHPでMySQLへ接続する

まず、前提として、以下の準備が整っている前提で話を進めます。

  • php.iniの設定(php_mysql.dllで、extension=php_mysql.dllを使えるようにする)
  • libmysql.dllがある
  • データベース、テーブルが用意されている

 

余裕ができたら、上記についても記事を書いてみようと思います。

 

phpでMySQLへ接続するには、「mysql_connect」を利用します。

 

 

これを書けばつながります。

ただ、これだけだと、つながらなかったときに困るので、mysql_error()を使ってエラーのときにエラー文を表示させます。

 

 

さらに、MySQLにつながらない(=その後の処理ができない)場合は、つながらなかった時点で後続の処理をとめてしまったほうがよいです。

 

 

以上でデータベースへの接続は完了です。

 

これで終わったら寂しい記事になってしまうので、テーブルに入っているカラムの値を取得するところも書いちゃおうと思います。

 

PHPでテーブルのカラムの値を参照する

MySQLに接続した後に、取得したいカラムがあるテーブルのデータベースを指定します。

 

 

こちらも、エラーになったときのことを考えて、

 

 

続いて、テーブルから値を取得します。

 

データベースへクエリー(※)を発行する関数として「mysql_query」があるのでこちらを使います。

※クエリとは、DBに問い合わせるためのコマンドのことです。Oracleなど利用するデータベースごとに違います。

 

 

こちらもエラーのことを考えて

 

 

これで、$resultを表示させればいいと思えますが違います。

このクエリの実行結果はresource型というデータで格納されており、これはmysql_fetch_assocというPHPの関数を使うことで取得できます。

 

 

こんな感じです。

 

最後に、MySQLとつなぎっぱなしにしてると、リソース的にも、セキュリティ的によくないので切断します。

 

 

これもエラーを考えて、

 

とします。

上記、一連の流れのまとめると、

 

 

となります。

もし、表示が文字化けするようなら、データベースの文字コードがあってない可能性があるので、

 

 

をデータベース選択後に記述すると解消します。

 

うーん、かなり忘れてましたね。。。

 

まぁ最初に思い出すのをかねて、上記の処理を書きまししたが、データベース接続する箇所が多いプログラムは接続から値取得までのところは関数を作って使いまわせるようにしておくのがよいですね。

そうしないと、ステップ数増えるし、ソース汚いしでいいことありません。

 

そういえば、SI屋でプログラマーをやってた頃は、日報にステップ数を書いて報告してたことがあったのを思い出しました。

ステップ数が多ければ多いほど評価された時代ですね。

 

昨今はステップ数が多いと、逆に生産性が悪いと思われるんじゃないだろうか???


コメント一覧

  • 通りすがり

    mysql_connect系関数は非推奨になり、PHP7で削除されました。
    Mysqli::connectなどを使うべきです。

    ソース
    http://php.net/manual/ja/function.mysql-connect.php

    • mislead

      ありがとうございます。
      次回以降、参考にさせていただきます。

コメントを残す

*

© yukio iizuka All Rights Reserved...