DBO Выберите, где равно и как

Я попытался написать код ниже 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();}

1

Решение

В соответствии с этот комментарий

При связывании параметров, очевидно, вы не можете использовать заполнитель дважды (например, «выбрать * из писем, где отправитель =: я или получатель =: я»), вам придется давать им разные имена, иначе ваш запрос будет возвращаться с пустыми руками ( но не подведет, к сожалению).

Это может быть вашей проблемой, так как вы пытаетесь привязать одно и то же значение к двум отдельным заполнителям. Попробуйте следующее:

$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();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]