2015-02-07 2 views
4

Это не работает

$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' '; 

Предупреждения: mysqli_stmt :: bind_param(): Количество переменных не соответствует числу параметров в подготовленном заявлении в/главном/rgero/public_html/PHP/searchadmins. PHP на линии 1

Это один не работает либо

$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% '; 

Фатальная ошибка: Неправильно SQL: SELECT * FROM users WHERE имя пользователя LIKE%% Error {?}: 0 в/главная/rgero/public_html /php/searchadmins.php в строке 1

Как бы я это сделал? Я пытаюсь выполнить поиск функции игроков, которая обновляет результаты при вводе формы, что-то вроде того, как Google уже показывает ответы во время ввода. Мне нужно имя пользователя Admin, если вы наберете dm, чтобы показать его уже среди других имен пользователей, содержащих «dm». Он также должен быть чувствителен к регистру

+2

Вы должны предварительно и добавить '%' к переменной, которую вы связываете с параметром '?'. –

+0

Да, просто используйте 'bindParam (1,"% $ var% ")' и т. Д. И литерал 'LIKE?' В запросе. – mario

+0

Итак, мне нужно взять переменную и добавить% {в начало и%} до конца? – aron9forever

ответ

16

Попробуйте

$likeVar = "%" . $yourParam . "%"; 
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?"); 
$stmt->bind_param("s", $likeVar); 
$stmt->execute(); 

вам необходимо подготовить запрос, используя просто ? то связать с использованием параметров bind_param.

Смежные вопросы