Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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



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

Здравствуйте. Стараюсь научиться подготавливать запрос, чтобы избежать 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, 19:26   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 11,984
Репутация: 2453

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Вроде надо "LIKE ?", а % в переданном значении.
Alex11223 на форуме   Ответить с цитированием
Старый 04.01.2017, 19:31   #3
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 24
Репутация: 10
По умолчанию

Что-то наткнулся случайно... в переменной, где я принимаю данные, нужно было сделать подпеременную в виде
Код:

$aID = "%".$aI."%";

и всё заработало. Возможно, кому-то пригодится. Извиняюсь, что создал тему и решил сам..(
Спасибо, Alex11223 )

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с отловом POST запроса nipopadyuk Javascript, Ajax и другие клиентские скрипты 2 16.06.2016 21: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




18:50.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru