Webシステムを作る(1)
プロジェクトの準備
- 「makers」「my_items」「carts」テーブルを備えた「mydb」というデータベーススペースを準備しておく
- 「htdocs」内に「shop」フォルダーを作成し、管理フォルダーに設定しておく
mysql_connect
- MySQLに接続する
リソース = mysql_connect ( ホスト名, ユーザー名, パスワード );
《index.php》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> <title>MySQLに接続する</title> </head> <body> <div id="container"> <div id="head"> <h1>トップページ</h1> </div> <div id="content"> <?php mysql_connect( 'localhost', 'root', 'password' ) or die(mysql_error()); echo 'データベースに接続しました'; ?> </div> </div> </body> </html>
mysql_select_db
- データベーススペースを選択する
mysql_select_db ( データベーススペース名 );
《index.php》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> <title>データベーススペースを選択する</title> </head> <body> <div id="container"> <div id="head"> <h1>トップページ</h1> </div> <div id="content"> <?php mysql_connect( 'localhost', 'root', 'password' ) or die(mysql_error()); echo 'データベースに接続しました<br>'."\n"; mysql_select_db( 'mydb' ) or die(mysql_error()); echo 'データベーススペース「mydb」を選択しました'; ?> </div> </div> </body> </html>
mysql_query ( 'SET NAMES ...' );
- 文字コードをセットする
<?php mysql_connect( 'localhost', 'root', 'password' ) or die(mysql_error()); echo 'データベースに接続しました<br>'."\n"; mysql_select_db( 'mydb' ) or die(mysql_error()); echo 'データベーススペース「mydb」を選択しました'; mysql_query( 'SET NAMES UTF8' ); ?>
- 確認メッセージを削除
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> <title>文字コードを設定する</title> </head> <body> <div id="container"> <div id="head"> <h1>トップページ</h1> </div> <div id="content"> <?php mysql_connect( 'localhost', 'root', 'password' ) or die(mysql_error()); mysql_select_db( 'mydb' ) or die(mysql_error()); mysql_query( 'SET NAMES UTF8' ); ?> </div> </div> </body> </html>
mysql_query
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> <title>SQLを実行する</title> </head> <body> <div id="container"> <div id="head"> <h1>トップページ</h1> </div> <div id="content"> <?php mysql_connect( 'localhost', 'root', 'password' ) or die(mysql_error()); mysql_select_db( 'mydb' ) or die(mysql_error()); mysql_query( 'SET NAMES UTF8' ); mysql_query( 'INSERT INTO my_items SET maker_id=1, item_name="もも", price=210, keyword="缶詰,ピンク,甘い", sales=0, created="2013-02-01", modified="2013-02-01"' ) or die(mysql_error()); echo 'データを挿入しました'; ?> </div> </div> </body> </html>
INSERT以外のSQL
UPDATE
<?php ... mysql_query( 'UPDATE my_items SET item_name="白桃" WHERE id=6' ) or die(mysql_error()); echo 'データを変更しました'; ?>
DELETE
<?php ... mysql_query( 'DELETE FROM my_items WHERE id=6' ) or die(mysql_error()); echo 'データを削除しました'; ?>
mysql_fetch_assoc
- レコードセットからデータを取得する
$recordSetを利用する
<?php mysql_connect( 'localhost', 'root', 'password' ) or die(mysql_error()); mysql_select_db( 'mydb' ); mysql_query('SET NAMES UTF8'); $recordSet = mysql_query ( 'SELECT * FROM my_items' ) or die(mysql_error()); ?>
変数「$recordSet」には、検索結果が格納されていますがこのままでは利用できません。
mysql_fetch_assocファンクション
- レコードセットは、「mysql_query」の戻り値です
- 「my_items」テーブルから無条件にすべてのデータを取り出しています
- その中から1件のデータを取り出さなければデータとしては利用できません
- そのために利用するのが「mysql_fetch_assoc」ファンクションです
- 「fetch(フェッチ)」とは、取ってくること
- 「assoc」は、「association(連想)」の意
- つまり「連想配列として取ってくる」という意味
たとえば次のようにして各データを利用することができるようになります。
テーブルのフィールド名が連想配列のキーになります。
$data[ 'id' ] ID $data[ 'maker_id' ] メーカーID $data[ 'item_name' ] 商品名 $data[ 'price' ] 価格 $data[ 'sales' ] 販売数
- 2件目のデータを取り出す
<?php ... $recordSet = mysql_query( 'SELECT * FROM my_items' ) or die(mysql_error()); $data = mysql_fetch_assoc($recordSet); echo $data[ 'item_name' ]; $data = mysql_fetch_assoc($recordSet); echo '<br>' . $data[ 'item_name' ]; } ?>
- 全件を取り出す
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> <title>レコードセットからデータを取得する</title> </head> <body> <div id="container"> <div id="head"> <h1>トップページ</h1> </div> <div id="content"> <?php mysql_connect( 'localhost', 'root', 'password' ) or die(mysql_error()); mysql_select_db( 'mydb' ); mysql_query( 'SET NAMES UTF8' ); $recordSet = mysql_query( 'SELECT * FROM my_items' ); while($data = mysql_fetch_assoc($recordSet)) { echo $data[ 'item_name' ]; echo '<br>'; } ?> </div> </div> </body> </html>
「while」は、「mysql_fetch_assoc」の結果を、変数「$data」に保存しつつ、その結果が false でないかを検査して商品名を表示し繰り返す。
COUNTなどのキー
- SQLで「COUNT」を利用して件数を取得する
- 「AS」を使って名前を「record_count」とする
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> <title>COUNTなどのキー</title> </head> <body> <div id="container"> <div id="head"> <h1>トップページ</h1> </div> <div id="content"> <?php mysql_connect('localhost', 'root', 'password') or die(mysql_error()); mysql_select_db('mydb'); mysql_query('SET NAMES UTF8'); $recordSet = mysql_query('SELECT COUNT(id) AS record_count FROM my_items'); $data = mysql_fetch_assoc($recordSet); echo '件数は ' . $data['record_count'] . ' 件です'; ?> </div> </div> </body> </html>