phpPHP開発 虎の巻

パラメータの埋め込み

カテゴリ:データベース

パラメータの追加

例えば、入力された商品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;

カテゴリ:データベースの記事