У меня есть переменная 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 вместо привязки переменной к столбцу.