Я попытался написать код ниже 100 различными способами и не могу понять правильный синтаксис. Кажется, независимо от того, как я пишу это, $ loggeduser не передается в имя пользователя WHERE. Что я делаю неправильно? Какой правильный синтаксис?
$query = $db->prepare('SELECT * FROM sites WHERE username = ? AND name LIKE ? OR login LIKE ? AND category="te"');
$query->bindValue(1, $loggeduser);
$query->bindValue(2, '%'.$_POST[search].'%');
$query->bindValue(3, '%'.$_POST[search].'%');
$query->execute();}
В соответствии с этот комментарий
При связывании параметров, очевидно, вы не можете использовать заполнитель дважды (например, «выбрать * из писем, где отправитель =: я или получатель =: я»), вам придется давать им разные имена, иначе ваш запрос будет возвращаться с пустыми руками ( но не подведет, к сожалению).
Это может быть вашей проблемой, так как вы пытаетесь привязать одно и то же значение к двум отдельным заполнителям. Попробуйте следующее:
$query = $db->prepare('SELECT * FROM sites WHERE username = :username AND name LIKE :name OR login LIKE :login AND category="te"');
$query->bindValue(:username, $loggeduser);
$query->bindValue(:name, '%'.$_POST['search'].'%');
$query->bindValue(:login, '%'.$_POST['search'].'%');
$query->execute();
Других решений пока нет …