Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2017, 18:15   #1
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 26
По умолчанию Проблема с подготовкой запроса

Здравствуйте. Стараюсь научиться подготавливать запрос, чтобы избежать sql-инъекции, но не могу разобраться, почему в одном случае "?" видит скрипт, а в другом - нет.
Код:
$aI = strip_tags($_GET['searching']);
$sSQL = "SELECT `id`, `title`, `year`, `image`, `text` FROM `movies` WHERE `title` LIKE '%?%'";

$stmt = $mysqli->prepare($sSQL);
	$stmt->bind_param("s", $aID);
	
	$stmt->execute();
	$stmt->bind_result($id, $title, $year, $image, $text);
        while($stmt->fetch()){
}
В этом случае реакции на "?" либо нет.. в общем, высвечивает "mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in ...\poisk.php on line 17". Если же запрос выглядит следующим образом:
Код:
$sSQL = "SELECT `id`, `title`, `year`, `image`, `text` FROM `movies` WHERE `title`=?;
То никакой ошибки нет и выдаётся результат. Но при этом, само собой, скрипт поиска нормально работать не будет, так как кроме принятия одного слова он больше ничего обработать не сможет( Подскажите, пожалуйста, как привести запрос к первоначальному виду с %?% и при этом решить проблему? Заранее большое спасибо!
romantiqueamour вне форума Ответить с цитированием
Старый 04.01.2017, 18:26   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вроде надо "LIKE ?", а % в переданном значении.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.01.2017, 18:31   #3
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 26
По умолчанию

Что-то наткнулся случайно... в переменной, где я принимаю данные, нужно было сделать подпеременную в виде
Код:
$aID = "%".$aI."%";
и всё заработало. Возможно, кому-то пригодится. Извиняюсь, что создал тему и решил сам..(
Спасибо, Alex11223 )

Последний раз редактировалось romantiqueamour; 04.01.2017 в 18:32. Причина: благодарность)
romantiqueamour вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с отловом POST запроса nipopadyuk JavaScript, Ajax 2 16.06.2016 20:30
Проблема при создании запроса SlavaSH БД в Delphi 14 03.02.2014 14:46
Проблема рост запроса. jetei Работа с сетью в Delphi 9 30.08.2011 20:09
Проблема с выполнением запроса к БД AgentSmit PHP 2 14.04.2011 02:13
Проблема выполнения запроса Рустам PHP 2 31.05.2008 15:15