Arale

アパレル、バリスタを経て未経験からのプログラマーになった男の勉強ログ

phpとdbのやりとりのこと

<form action="xxx.php" method="post">
name
<div><input type="text" name="n"></div>
message
<div><textarea  name="m"></textarea></div>
<input type="submit" value="SUBMIT">
</form>

送信先はxxx.php、POST送信

テキストフォーム、テキストエリアには名前をそれぞれ付けており、

$POST["n"], $POST["m"]でフォームに入力された情報を取得できる。

$my_num = htmlspecialchars($_POST["n"], ENT_QUOTES);
$my_mes = htmlspecialchars($_POST["m"], ENT_QUOTES);

phpの記述ではフォームで入力された情報に

タグなどがあった場合に無効化する記述を施し、

変数に格納してます。

$db = new PDO("mysql:host=localhost;dbname=db_book", "root", "root")
$変数 = new オブジェクト("mysql:host=ホスト名,dbname=DB名", "ユーザー名", "パスワード名")

$db->query("INSERT INTO tb_book(ban, nam, mes, dat) 
           VALUES(NULL, '$my_nam', '$my_mes', NOW())")

データベースを操作するためのコマンド

PDOオブジェクトを使用し、$db変数に代入している。

newはオブジェクトを作成するときに使用するコマンド

ホスト名やユーザー名はどこから探すのー?!ていう時は

MAMP>WebStart>MySQLから確認可能

$db->queryでSQL文を用いて、INTOの後にデータベースにあるテーブル名、

カラム名に該当するデータを入れてます。

VALUESの後に続くのは入れたい値を指定してます。

DBを操作する場合はページ毎にPDOオブジェクトが必要

表示プログラムの実行

$db = new PDO("mysql:host=localhost;dbname=db_book", "root", "root");
// tb_bookテーブルから全てのデータを取得
// queryメソッドの結果を$ps変数に代入
// 文字列や数値ではなく、PDOStatement(オブジェクト)が入っている
// $psはPDOStatementのPSからとってる?!
$ps = $db->query("SELECT * FROM tb_book");
// $psの中身はオブジェクトなので、printで出力できない
// fetchというメソッドを実行 SQLの実行結果から1レコード分を配列として返す
// 実行すると一番古いレコードが配列に変換され、$rに代入される
$r = $ps->fetch();
// fetchメソッドが返す配列はカラム名がそのままデータの名前になっている
// {}は展開式、各変数を囲むことで中身を表示する
print "{$r['ban']} {$r['nam']} {$['dat']} {$['mes']}";

長くなりましたが、以上がphpでdbのデータとのやりとり諸々です。 foreachやwhileを用いて、残りのデータを表示します。