Как подставить переменную в запрос?

Подскажите пожалуйста что не так у меня в коде. Делаю запрос в базу данных

$id = $_POST['id']; // 25
$cat = $_POST['thisCat']; // persons
$ph = \R::getAll("
    SELECT *
    FROM phones
    WHERE owner_id = $id AND cat = $cat
");

Получаю ошибку

Произошла ошибка
Код ошибки: Исключения ошибок
Текст ошибки: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'persons' in 'where clause'
Файл, в котором произошла ошибка: Z:\domains\a-my.loc\vendor\fw\libs\rb.php
Строка, в которой произошла ошибка: 720

но если в запросе вместо переменной $cat запрямую написать 'persons'

$ph = \R::getAll("
    SELECT *
    FROM phones
    WHERE owner_id = $id AND cat = 'persons'
");

всё работает. Что я делаю не так?


Ответы (1 шт):

Автор решения: CrazyElf

Попробуйте использовать такую подстановку переменных:

$id = $_POST['id']; // 25
$cat = $_POST['thisCat']; // persons
$ph = \R::getAll("
    SELECT *
    FROM phones
    WHERE owner_id = :id AND cat = :cat
",
[
     'id' => $id,
     'cat' => $cat
]);
→ Ссылка