【DB:出力条件】WHEREを使った書き方
【DB:接続と出力】PDOオブジェクトで、DBにアクセスしてデータを配列に格納するところまではできた。
ただ実際は、ユーザーのアクションごとに必要なテーブルやレコードは変わし、毎回全部読み込んでたら使いたい情報を非常に記述しにくいのでWHEREを使って、SQLの時点で取り出すDB情報を検索するのだ。
今回はplayersテーブルから、主に3パターン紹介
カラム :縦列
レコード:横列
カラムを指定
「この縦列を一気にほしいぜ!」(たぶん比較するのかな?)
sql文に書いていく。
<?php $sql = 'SELECT name, level FROM players'; $statement = $pdo->prepare($sql); $statement->execute(); ?>
条件を指定1
条件の数値や文字が決まっている場合。
「レベル10以上のつわものだけ集え!」「ケンってやつの情報が欲しい!」
<?php $sql = 'SELECT * FROM players WHERE level >= 10'; $statement = $pdo->prepare($sql); $statement->execute(); ?>
<?php $sql = 'SELECT * FROM players WHERE name = "ケン"'; $statement = $pdo->prepare($sql); $statement->execute(); ?>
条件を指定2
条件の数値が変数の場合。
実戦ではこれが圧倒的に多い。なぜならユーザーのアクションごとに使うデータや出力するデータが変動するからだ。
ただし、WHEREの後ろに変数を指定することはできない。(「なんと…!」)
1.いったん「:〇〇」で書く
2.bindValue(Param)メソッドで「:〇〇」と変数名をセットにする
第一引数に「:〇〇」を、第二引数に変数を入れればOK(値を直接入れてもOK)
$low_value = 10 のとき
<?php $sql = 'SELECT * FROM players WHERE level >= :lower'; $statement = $pdo->prepare($sql); $statement->bindValue(':lower', $low_value, PDO::PARAM_INT); $statement->execute(); ?>
bindには2種類ある
bindValue
第二引数に入れれるもの
変数:〇
値 :〇
評価:即値をバインド
推奨:文字列の時 第三引数にPDO::PARAM_STRを入れる
※第三引数は入れないとエラーが出る
bindParam
第二引数に入れれるもの
変数:〇
値 :×
評価:実行するとき。つまり、ある変数があるが、executeの手前で変数が変わるとその値をバインドする。
推奨:数値の時 第三引数にPDO::PARAM_INTを入れる
※第三引数は入れないとエラーが出る
===========
参照記事(ありがとうございました!!)
https://qiita.com/tabo_purify/items/0a69fd48018c4ebfd2f2qiita.com
===========