Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
11 / 11 / 2
Регистрация: 14.06.2012
Сообщений: 46
1

КАК правильно организовать запрос по фильтру в полях SET MySQL

18.06.2012, 22:23. Показов 1198. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Существует таблица, в ней два поля SET, делаю фильтр по параметрам, передаю через форму 4 параметра , и глюк, если три нормально срабатывает, если выбранно 2 SET, то глючит:
Fatal error: Uncaught exception 'ExceptionMySQL' with message 'Ошибка при обращении к таблице Каталога камня' in Z:\home\localhost\www\kievstone\result_search.php:148 Stack trace: #0 {main} thrown in Z:\home\localhost\www\kievstone\result_search.php on line 148
////////////////////Вот Код//////////////
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// из формы
if(isset($_POST['search']))
{
//echo title("Результаты поиска");
echo "";
// Флаг равен true, если есть хотя бы один критерий поиска
$is_query = false;
// Проверяем наличие и число параметров поиска
$tmp1 = $tmp2 = $tmp3 = $tmp3 = $tmp4 = "";
 
// Защищаем данные от SQL-инъекции
if (!get_magic_quotes_gpc())
{
$_POST['catalog_name'] = mysql_escape_string($_POST['catalog_name']);
$_POST['color'] = mysql_escape_string($_POST['color']);
$_POST['application'] = mysql_escape_string($_POST['application']);
$_POST['cena'] = mysql_escape_string($_POST['cena']);
}
 
// Вид камня
if(!empty($_POST['catalog_name']) && $_POST['catalog_name'] != 'none')
$tmp1 = "AND catalog_name='$_POST[catalog_name]'";
// Цвет камня
if(!empty($_POST['color']) && $_POST['color'] != 'none')
$tmp2 = "AND color='$_POST[color]'";
// Применение камня
if(!empty($_POST['application']) && $_POST['application'] != 'none')
$tmp3 = "AND FIND_IN_SET('$_POST[application]', application)>0";
// Колекция камня
if(!empty($_POST['cena']) && $_POST['cena'] != 'none')
$tmp4 = "AND FIND_IN_SET('$_POST[cena]', cena)>0";
 
// Формируем запрос из переданных данных
$query = "SELECT * FROM $tbl_cat_positiоn WHERE hide='show'
".$tmp1.$tmp2.$tmp3.$tmp4." ";
 
// Выполняем SQL-запрос
 
$pos = mysql_query($query);
if(!$pos)
{
throw new ExceptionMySQL(mysql_error(),
$query,
"Ошибка при обращении к
таблице Каталога камня");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2012, 22:23
Ответы с готовыми решениями:

Как организовать правильно запрос
Доброго всем. Никак не могу понять, как ЭТО сделать... Есть таблица, есть форма с запросом. Идет...

Как правильно организовать GET-запрос на сайт?
подскажите плз как правильно сделать GET запрос на сайт, предназначен он для добавления...

Как в Yii правильно организовать запрос с compare?
привет! Что я делаю не так? Мне необходимо получить такой запрос: SELECT COUNT(*) FROM...

Как правильно организовать проверку на отсутствие или существование записи в mysql
Вопрос в следующем как организовать проверку на отсутствие или существование записи в mysql? ...

2
1180 / 421 / 107
Регистрация: 31.03.2012
Сообщений: 1,150
19.06.2012, 09:04 2
Во-первых, отсутствуют разделители в строке запроса
Цитата Сообщение от serdgou Посмотреть сообщение
"SELECT * FROM $tbl_cat_positiоn WHERE hide='show' ".$tmp1.$tmp2.$tmp3.$tmp4."
попробуй ручками подставить значение парочки определенных в твоем коде переменных вида
PHP
1
$tmp1 = "AND catalog_name='$_POST[catalog_name]'";
1
11 / 11 / 2
Регистрация: 14.06.2012
Сообщений: 46
19.06.2012, 20:44  [ТС] 3
да проблему нашел подставляя руками значение, не было пробелов строке
PHP
1
 $tmp4 = " пробел AND FIND_IN_SET('$_POST[cena]', cena)";
,
как только добавил везде пробелы, все заработало. Спасибо
0
19.06.2012, 20:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2012, 20:44
Помогаю со студенческими работами здесь

Подскажите как правильно организовать запрос с параметром в sql
Есть такой цикл, который подразумевает вставлять каждую итерацию строчку в базу. Но как то не могу...

Как правильно писать запрос к БД MySql?
Я уже давно работаю с MySql. Даже сейчас, поиск в интернете выводит mysql_connect и процедурный...

Как правильно создать Between запрос Mysql
Доброго времени суток, подскажите как правильно создать запрос на Mysql string MySelect =...

Как правильно сформировать запрос mysql в pdo?
Здравствуйте, У меня есть два вопроса: Как правильно сформировать массив подстановки в execute? Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru