Php PDO,让用户还可以定义要选择的字段

标签 php mysql pdo

我正在尝试制作一个从表中选择所有数据的函数,用户在表中定义字段和值。像这样:

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/

相关文章:

MySQL过程不编译 - 删除变量时出错

javascript - jQuery 避免在以编程方式完成时触发更改

mysql - 条件 SELECT 中的重复连接

PHP PDO 正确使用 JOINS 进行 mySQL 查询

PHP:过滤我的输入字段

php - 直接在Vim中获取官方PHP函数文档

php - 使用mysql将数据库信息拉入PHP脚本内的html表中

javascript - 如何提高 div 的滚动速度?

php - 我把 PDO 放在哪里?

php - 如何只显示一个嵌入的YouTube视频