2018/04/16

sponsored link
はじめに
PHPを用いてmysql(データベース)を操作する基本を備忘録として。
環境
MacOS High Sierra 10.13.3
MAMP 3.5.2
PHP 7.0.8
PDO関数とは
PHP Data Objects (PDO) 拡張モジュール。PHPからデータベースにアクセスするためのインターフェイスを定義する。
参考
基本
データベースに接続するためにはサーバーの場所や接続するデータベースの名前、ユーザーIDとパスワードが必要になる。
New PDO() で接続してくれる。引数の要素はかなり多いが最低限必要なものを書いておく。
$DB = new PDO([サーバーに関する情報], [ユーザID], [パスワード]);
1 | $DB = new PDO(‘mysql: host='localhost'; dbname=’test’ , root, pass); |
わかりやすいやり方としてホスト情報棟を変数で定義しておくこともできる。
1 2 3 4 5 6 7 8 9 | <?php $db['host'] = "localhost"; $db['dbname'] = "memoapp"; $db['user'] = “root"; $db['pass'] = "pass"; $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']); $DB = new PDO($dsn, $db['user'], $db['pass']); ?> |
$DBを利用することでデータベースの操作ができる。
外部ファイルにしておく事もできる。
操作
データベースを操作する方法は非常に単純。mysqlが持つ本来の命令文を使う。なので、sqlのコマンドをある程度覚える必要がある。
操作に使用する関数はいくつか用意されているが、基本的な操作のみであれば一種類で問題ない。
1 2 | $stmt = $DB->prepare(“”); $stmt -> execute(); |
$stmtはなんでも良い。
Prepare(); に引数としてsqlのコマンドを渡す。
Execute(); を実行すると結果が$stmt に連想配列として保存される。
また、PHPの変数をコマンドに混ぜたい場合はPrepare(); 内で? を使って表記しExcute(); に引数として変数を与える。
データを追加する
1 2 3 4 | <?php $stmt = $DB->prepare("INSERT INTO userData(userid, password, fullname) VALUES (?, ?, ?)"); $stmt->execute(array($username, $password, $fullname)); ?> |
このようにするとuserDataのテーブルに[userid][password][fullname]が保存される。execute();の引数を変更して実行すると更に追加される。
データを取得する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php try { $stmt = $DB->prepare('SELECT * FROM userData WHERE userid = ?'); $stmt->execute(array($userid)); if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { //$rowに連想配列として情報が記憶される } else { //ヒットする情報がない } } catch (PDOException $e) { //データベースに問題が発生 } ?> |
userData のテーブルからuserid が $useridである行のみを取得する。その一番上の行の情報を取得する。
If 文をwhile文などに変えると条件の一致したすべての情報に対して操作することも可能である。