Всем привет! Из интереса занялся PHP, придумал себе проект и пишу, попутно учась.
Есть класс, в нём объявлены публичные переменные ($what, $id и $owner), функции класса и его объекты.
Хочется функцию, чтоб доставала нужную строку из БД по запросу $объект->функция(аргументы). Написал:
spoiler
function getData(string $what, int $id, int $owner) {
$query = $qpdo->prepare("SELECT :what FROM `table` WHERE `id` = :id AND `owner` = :owner");
$query->execute(array(':what' => $what, ':id' => $id, ':owner' => $owner));
$result = $query->fetch(PDO::FETCH_COLUMN);
return $result;
}
Для теста вывожу на экран
$object->getData('id', 1, 1)
, а оно выдаёт данные переменной $what (в данном случае это "name").
Примечательно, что если не использовать подготовленные выражения PDO, а внаглую писать переменные прямо в SQL-запросе, то всё работает как надо. Пример работающего кода:
spoiler
function getData(string $what, int $id, int $owner) {
$query = $qpdo->query("SELECT " . $what . " FROM `table` WHERE `id` = " . $id . " AND `owner` = " . $owner . "");
$result = $query->fetch(PDO::FETCH_COLUMN);
return $result;
}
Как это понимать и что с этим делать?