ハイウェイバスの予約システム
ログインとかは今回なし
db名: highwaybus
table名: seats / column 3
一日一本しかないバスを予約するイメージ
バスを特定するには日付だけあればいい
日付と座席番号があれば特定できるイメージで
column:
ymd /date /primary
seat_id /primary
reserved / boolean(設定しても中身はint)
>カラムにプライマリーキー制約を設定すると、
カラムには他のデータの値を重複することのない値しか
格納することができなくなります。
また NULL も格納することができません。
その結果、プライマリーキー制約が設定されたカラムの値を検索することで、
テーブルの中でただ一つのデータを特定することができます。
予約をするには予約済みとかがあってほしいのでデータを作っておく
一気にデータをつくりだす作業をする
「バッチをとる」というらしい
highwaybusフォルダにフォルダをきる
-api
-css
-js
-tool
今回は手続き型で書く。クラスのやり方は再来週予定
直下にconfig.phpを制作
プログラムはおおむね暗記は必要なく理解がひつようだが
PDOの流れやループの書き方は
ある程度出力を何回かやって書き方を覚える必要がある
$dsn = "mysql:host={$host};dbname={$dbname};charset=utf8";
ここは区切り文字はセミコロン。前のテストで間違えたやつだ。
カンマは配列であるとか関数のパラメータの区切り文字で使う。
ところで変数というのは、場合によって変数おせんを受けるかもしれない
$dsn = "mysql:host={$host};dbname={$dbname};charset=utf8";
ここをよりセキュアにしたいと思ったら定数を使う
文字列連結をしないといけなくなるのでむつかしい
商用なら定数をつかうとセキュア
↓
defineというキーワードがある
オリジナルの定数を作ることが出来る
パラメータは2つ
定義をするときには丸括弧とダブルクォートを使う
書いたときにすぐ「定数だ」とわかるように全部大文字で書くのがふつう
define("HOST_NAME","localhost");
こんな風に記述する
既にある定数とかぶらなければなんでも名前は自由
define("DB_PASS","");
これはできない
空文字はいれられない
本番で運用するときパスワードがないということはありえないのでなにかしら値が入る
逆にパスワードってどこで設定するの??
→プロバイダがくれるらしい
echo HOST_NAME;
とか書ける。
丸括弧も""もいらない。
これだけでエコーされる
ここまで
config.php
<?php
//setting
//環境によって変える
$host = "localhost";
$dbname = "highwaybus";
$dbuser = "root";
$dbpass = "";
//
$dsn = "mysql:host={$host};dbname={$dbname};charset=utf8";
$pdo = new PDO($dsn,$dbuser,$dbpass);
/*
//定数を使うやり方
define("HOST_NAME","localhost");
define("DB_NAME","highwaybus");
define("DB_USER","root");
define("DB_PASS","");
echo HOST_NAME;
*/
?>