phpデータベース周りで勉強したこと
これをまず読むとわかりやすい
・データベースとSQL - PHP入門 - ポンクソフト
・ウェブシステムでデータを保存する手段としては、主に以下の5つがあります。
変数,クッキー.セッション.ファイル,データベース
・データベースによるデータ保存
データベースも長期間のデータ保持が可能で、さらにデータの「作成」「検索」「更新」「削除」を簡単にできる機能があります。
・主要なカラム型
カラム型 中に入る値
INT 整数
VARCHAR(n) n文字までの文字列
TEXT 制限のほぼない文字列
DATETIME 日付と時刻
DATE 日付
TIME 時刻
そのあとにこれ
・PHPでMySQLを使う - PHP入門 - ポンクソフト
・PDO(PHP Data Objects)クラスを使うと、簡単に汎用的なデータベースアクセスのコードを書くことができます。
レコードの表示はテーブルなどで行をループして行い、レコードの挿入・更新はフォームを介して行うのが一般的です。
・PDOについて
PHPからMySQLのデータベースを扱うにはたくさんの方法があり、どれを選択するかは時と場合によるのですが、今回は汎用性が高くて高速な「PDO」クラスを使います。
PDOを使ってデータベースを操作する際の基本的な流れは「PDOオブジェクトの作成」→「SQLの発行」→「結果レコードの参照」になります。
・レコードの表示、挿入、更新、削除
・レコードの挿入
prepateメソッドでSQL文を「準備」します。発行はまだしません。「?」は、後から値を入れるために、とりあえず仮に置いておくものです(「プレースホルダ」と言います)。
executeメソッドで、実際にSQL文を発行します。引数で配列を受け取り、先ほど準備したSQL文の「?」に配列の先頭から値を入れて行きます。ここでは最初の「?」にフォームの名前欄に入力した文字列、次の「?」に価格欄に入力した文字列が入ります。
queryは使わない。
・MySQL DSN構文
mysql:dbname=データベース名;host=ホスト名;port=ポート番号
PDOについてさらに詳しく
・PDOの利用 - PHP入門
・PDOオブジェクトの作成
PDOクラスはオブジェクトの作成時に、データベースへの接続に失敗した場合"PDOException"という例外を投げるようです。その為、try catchを使って例外処理を記述しておきます。
$dsn = 'mysql:dbname=testdb;host=localhost';
$user = 'dbuser';
$password = 'dbpass';try{
$dbh = new PDO($dsn, $user, $password);
}catch (PDOException $e){
print('Connection failed:'.$e->getMessage());
die();
}$dbh = null; //PHPスクリプトが終了すればデータベースへの接続は閉じられますが、明示的に閉じる場合にはオブジェクトに"NULL"を代入する。
・SQLの発行
データベースに接続した後で、実際にSQL文をデータベースに発行して様々な処理を行います。
SQL実行の結果を所持:1回だけ使用するようなSQL文をデータベースへ送信するにはPDOクラスで用意されている"query"メソッドを使います。
データの取得:PDOStatementクラスのオブジェクトから実際の値を取り出すにはPDOStatementクラスで用意されている"fetch"メソッドを使います。$sql = 'select id, name from shouhin';
$stmt = $dbh->query($sql);$result = $stmt->fetch(PDO::FETCH_ASSOC);
print($result[0]);
print($result[1]);prepareメソッドとexecuteメソッド
「execute」メソッドを実行した結果、PDOStatementクラスのオブジェクトには「query」メソッドの場合と同じくSQL文の実行結果が含まれています(SELECT文のような結果がある場合)。そこから実際の値を取り出す方法は「query」メソッドの場合と同じく「fetch」メソッドを使います。・データの追加(INSERT)
「prepare」メソッドでSQL文を作成し「execute」メソッドでSQL文をデータベースへ発行します。・データの更新(UPDATE)
「prepare」メソッドでSQL文を作成し「execute」メソッドでSQL文をデータベースへ発行します。・データの削除(DELETE)
「prepare」メソッドでSQL文を作成し「execute」メソッドでSQL文をデータベースへ発行します。
これもPDOについて分かりやすい
・PDOでMySQLに接続からINSERTやSELEC、UPDATEからDELETE、SUM、COUNTやテーブル作成など|LABO IWASAKI
・PHPでデータベースに接続するときのまとめ - Qiita
・PHPでPDOを使ってMySQLに接続、INSERT、UPDATE、DELETE、COUNT、SUM - Qiita
・PDOの真の力を開放する - PHPでデータベースを扱う(3): Architect Note
マニュアルはこれ
・PHP: PDO - Manual
最後に動画を見て理解できるか確かめる
・PHPデータベース入門 (全13回) - プログラミングならドットインストール
lastInsertId()とは→PHP: PDO::lastInsertId - Manual
rowCount()とは→PHP: PDOStatement::rowCount - Manual
数字型を扱うときはbindvalueを使う
PDO::FETCH_CLASS
一連の処理をまとめて行なうことができるトランザクション
おまけ
・Mysqlコマンド - Qiita