我正在尝试制作一个从表中选择所有数据的函数,用户在表中定义字段和值。像这样:
public function fetch($field, $value){
$query = $this->db->prepare("SELECT * FROM `users` WHERE ? = ?");
$query->bindValue(1, $field);
$query->bindValue(2, $value);
try{
$query->execute();
} catch(PDOException $e){
die($e->getMessage());
}
return $query->fetch();
}
我没有得到任何返回,甚至没有错误。有人可以告诉我我做错了什么,或者在 PDO 中是否甚至可以让用户也选择表的字段以及值。
谢谢。
最佳答案
您不能为标识符(即字段名称)使用占位符;仅用于数据。您只能将允许的字段名称列入白名单:
$allowed = array('name', 'date', 'price');
if (!in_array($field, $allowed, true)) {
throw new InvalidArgumentException;
}
$query = $this->db->prepare("SELECT * FROM `users` WHERE $field = ?");
关于Php PDO,让用户还可以定义要选择的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16768088/