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
コメント (0)
Trackbacks (0)
コメントを残す
トラックバック