POD::bindParam()とPOD::bindValue()
SQLインジェクション対策にPOD::bindParam()かPOD::bindValid()が必要。
bindParam():変数の参照をバインド。値はexecute()時に決定。
bindValid():値をバインド。バンドした時点で値が確定される。
<?php $sql = 'SELECT * FROM table WHERE condition=:condition;'; $stmt = $dbh->prepare($sql); $condition = 'CONDITION'; $stmt->bindParam(':condition', $condition); $condition = 'NOTHING'; $stmt->execute();//SELECT * FROM table WHERE condition='NOTHING'を実行 $condition = 'CONDITION'; $stmt->bindValue(':condition', $condition); $condition = 'NOTHING'; $stmt->execute();//SELECT * FROM table WHERE condition='CONDITIONを実行
ユーザからの入力は全てプログラムでのチェックが必要と学習。
htmlspecialcharsしかりbindParamしかり。