DB、HTML、PHP

■DB(最終回)
□総復習
■HTML/CSS
□ブログアプリ制作準備
PHP
□DBとの融合


今日は、なんだか月曜日な感じがしなかったなってちょい思った。
それが何故かは、まったく予想もつかないし考えません。
今日は、お昼に薬局に行って、お菓子を衝動買いしました。
1日2個までと自分の中で決めたのに、早速4個も食べてしました。むしゃむしゃしてしまいました。
あと今日は先輩からCDを借りました。
といった感じで、なんの脈絡もない話は置いといて、
今日の授業説明に入りたいと思います。



■DB(総復習)
□WHEREとHAVINGの使い分け
WHERE→テーブル全体にかかる条件

HAVING→グループ分けしたものに対してかかる条件、グループ分けしているので集合関数を用いた条件式になることが多い
□1対n、n対n
とにかくn対nの関係性になったものは、1対nに読みほどくことができるということを今の段階では覚えていれば良いそうです。ここの話は少し難しかったので、また質問でもしたいと思う。
□insert,update,deleteを行うときに最も注意することは、トランザクション!!
□TimeStamp
2007年度を取り出す際に、下のうち正しいのはどれでしょう。
1、'2007' <= saleDate
2、'2007-01' <= SaleDate
3、'2007-01-01 <= SaleDate
4、'2007-1-1' <= SaleDate
5、2007-1-1 <= SaleDate
6、SaleDate Like ('2007%')

このうち正しいのは、3.4番。2番は△。他は全て×です。1番は日付か数値なのかわかりません。5番は文字か数値かわかりません。
6番は私が先日やろうとした、またその時は実行できた6番もよろしくありません。
そもそも実際のSaleDateというのは、19nn年n月n日を起点としてのμ秒を数えていて、最終的には数値型として比較しているものです。なのでー(ハイフン)がないようなものは全て秒として読み取られてしまいます。



PHP
□DBとの融合
新しく使った関数
接続のため
 mysql_connect
データベースの切り替え
 mysql_select_db
SQL発行用の関数
 mysql_query
結果の取得(複数あるので、それぞれ使い方と違いを理解してほしい)
 mysql_fetch_assoc 連想配列(文字)として結果の行を取得する。キーにカラム名が入る。
 mysql_fetch_row  1レコードを1つの配列にする。結果を添字配列(数字)として取得する
 mysql_fetch_array 
接続を切る
 mysql_close


実際にDBに接続し表示を行うためのサンプル

<html>
<head>
<title>DB接続練習</title>
</head>
<body>
<?php
/*
 * DBに接続し、表示を行うためのサンプル
 */

////
// DB(MySql)に接続するための処理
// mysql_connect関数を利用
// $linkには接続されたリソースが格納される
////

$link = mysql_connect('localhost','root');
if (!$link) {
  die("接続に失敗しました。". mysql_error());
}

////
// 普段DBの授業で使用していたデータベースに接続を行う
// mysql_select_db関数を利用
// $db_selectedにはデータベース接続に成功したかどうかの結果が入る
////

$db_selected = mysql_select_db('sql_drill',$link);
if (!$db_selected) {
  die("データベースの切り替えに失敗したか、データベースが存在しません。".mysql_error());
}

////
// 欲しいデータを取得するためのSQLを作成し、実際に取得する
// mysql_query関数を利用
// $resultには取得した結果が格納される
////

//SQLを変数に格納する
$sql = "SELECT
          *
        FROM
          Customers
        ; ";
//SQLを発行し、結果を取得
$result = mysql_query($sql);
if (!$result) {
  $message = 'DB Error:'.mysql_error()."<br />";
  $message .= "発行したSQL:$sql";
  die($message);
}
?>
<?php
////
// 取得したデータを表示する
// mysql_fetch_assoc/mysql_fetch_row/mysql_fetch_array等を利用
////
?>
<table border="1">
  <?php while ($row = mysql_fetch_row($result)):?>
  <tr>
  <td><?php echo $row[0] ;?></td>
  <td><?php echo $row[2] ;?></td>
  <td><?php echo $row[3] ;?></td>
  </tr>
  <?php endwhile;?>
</table>
<?php
////
// DBの処理を終了する
////
mysql_close($link);
?>

</body>
</html>

次はフォームを作成して、入力されたSQL文を発行・結果を表示できるようなものを作成する。assocでカラム名も表の1行目にでるようにプログラムを作成中。完成し次第また日記を更新したいと思う。