?
フィールド名にパラメーターを使用することはできません。
PDO では、テーブル名と列名をパラメーターで置き換えることはできません。その場合、データを手動でフィルタリングしてサニタイズするだけです。
ソース。
ユーザーフィールドを直接編集できるようにするには、次のようにします。
public function fetch($field, $value){
// To avoid injection
if (!in_array($field, array('these', 'are', 'field', 'names')))
echo "Sorry, that's not a valid field";
else
{
$query = $this->db->prepare("SELECT * FROM `users` WHERE `" . $field . "` = ?");
$query->bindValue(1, $value);
try{
$query->execute();
} catch(PDOException $e) {
die($e->getMessage());
}
}
return $query->fetch();
}
さらに、この作業を自動的に行うための小さな関数 (実際にはメソッド) があります。
// Validate the cols names.
private function setCols($TableName)
{
// If this script is still running, $this->Table exists in database and it's sane
$Cols = array();
$STH = $this->DB->query('SHOW COLUMNS FROM `' . $this->Table . '`');
foreach ($STH->fetchAll() as $Name)
$Cols[] = $Name[0];
$this->Columns = $Cols;
}
これにより、テーブルのフィールドが動的に検索されます。