パラメータの埋め込み
パラメータの追加
例えば、入力された商品IDの売り上げを表示するとする。 この場合、イメージとしては以下のようなSQLを作成する。
$sid = $_GET['sid']; $sql = "SELECT * FROM uriage WHERE sid=$sid"; $sql = $db->prepare($sql);
ただし、この方法にはセキュリティ上問題があるので、 実際には行ってはならない(次の方法を行う)。
パラメータの埋め込み
単純に文字列を連結し、SQLを発行する形のプログラムは セキュリティ上「SQLインジェクション」の危険がある。 これを避けるには prepareメソッドを使用する際にパラ メータ埋め込みを使用する。
1.SQL中の埋め込みたい箇所に ? と書く
例: $sql = $db->prepare( 'SELECT * FROM uriage WHERE sid = ?');
2.埋め込み場所に入れる変数をbindValueメソッドで指定する。
例:$sql->bindValue(1,$sid);
○bindValueの書式 オブジェクト->bindValue(番号,値); 番号:?が出てくる順番(1から) 値:埋め込みたいデータ
パラメータ まとめ
// uriageテーブルから商品ID=1の商品名を表示 $db = new PDO("mysql:dbname=hanbai","root","root"); $db->query("SET NAMES utf8;"); $sid = 1; $sql = $db->prepare('SELECT * FROM uriage WHERE sid= ?'); $sql->bindValue(1,$sid ); $sql->execute(); $all = $sql->fetchAll(); foreach ($all as $data) { echo $data['kosu']; echo '
'; } $sql = null;