ホーム > PHP > PHP+MySQLの基本の基本。

PHP+MySQLの基本の基本。

移転しました http://d.hatena.ne.jp/Yusk/20101201/1332905200

最近、暇つぶしに(とも言えるし、卒研から逃れるためとも言えるが)PHPでMySQLを操作するプログラムを書いている。
大変初歩的なことなので、自分用のメモとして。

PHPでMySQLに接続して(mysql_connect())、使うデータベースを選択し(mysql_select_db())、クエリを送信する(mysql_query())ところまでは成功したのだけれど、その結果にアクセスできない。

mysql_query関数の戻り値を調べてみると、リソース型と書いてある。
そこで、リソース型の説明を読んでみると、どうやらこの型は「外部リソースへの参照を保持している型」らしく、C言語な人達にわかるやすく説明するならファイルハンドルである、とのこと。

なので、

$row = mysql_fetch_array(ここにmysql_queryの戻り値)
$row = mysql_fetch_row(ここにmysql_queryの戻り値)

のように、リソース型を配列に直してもらう必要がある。
mysql_fetch_arrayとmysql_fetch_rowはどちらを使っても良くて、違いは前者は戻り値が連想配列になるのに対し、後者は通常配列になるということだけ。

$query = "SELECT * FROM テーブル名";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result))
{
echo $row["フィールド名"];
}

この関数を複数回呼ぶことで、すべての検索結果を得ることができる。オブジェクト指向的にはイテレータ、手続き型的にはジェネレータと言ったほうがわかりやすいかもしれない。

それと次に苦労したのが、文字コードの問題。
データベースとPHPをUTF8にしたのに何故か文字化けする……。ということで、調べたら以下のクエリを最初に呼ばなければならないとのこと。

$query = "SET NAMES UTF8";
mysql_query($query) or die(mysql_error());

あと、SQLのdate型を年月だけで検索するときには、以下のようにフォーマットを指定し、取得する。

DATE_FORMAT(date, '%Y%m') = 200805
カテゴリー:PHP
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す