У меня есть переменная PHP $col с именем столбца.  Я хочу создать запрос с PDO, который выбирает значение этого столбца.  Я знаю, как использовать bindValue() , и попробовал следующее: 
 $db = new PDO('mysql:host='. $db_host . ';dbname=' . $db_name . ';charset=utf8', $db_user, $db_password); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); function get_user($id, $column){ $sql = " SELECT :col FROM users WHERE `id` = :id;"; try { $st = $db->prepare($sql); $st->bindValue('col', $column, PDO::PARAM_STR); $st->bindValue(':id', $id, PDO::PARAM_INT); $st->execute(); $result = $st->fetch(); return $result; } catch (PDOException $e) { echo "Database query exception: " . $e->getMessage(); return false; } } 
  Это приводит к следующему исключению: Исключение Database query exception: SQLSTATE[42S22]: Column not found: 1054 Unknown column ''name'' in 'field list' для $col = 'name' .  Конечно, name столбца действительно существует. 
  Он хорошо работает на WHERE = :value , но я не могу заставить его работать для столбца.  Как достичь этого? 
  Дополнение: я нашел функцию bindColumn() , но я думаю, что делает наоборот, привязывая имя столбца к переменной PHP вместо привязки переменной к столбцу.