Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с вложенным SELECT 
:(
    Опции темы
maxim2009
Дата 13.12.2009, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.10.2009

Репутация: нет
Всего: нет



 Возникла проблема с обращение к базе данных, а именно задав множественные условия получаю ошибку. 
 Сам обработчик получающий переменные из поисковой формы, сделанный на основании этого
Код

$fields = array();
if( $name != '' )
    $fields[] = 'imya = "' . mysql_real_escape_string($name) . '"'; 
if( $adress != '' )
    $fields[] = 'flat = "' . mysql_real_escape_string($adress) . '"'; 
if( $vozrast != '' )
    $fields[] = 'let = "' . mysql_real_escape_string($vozrast) . '"'; 
if( $hobby != '' )
    $fields[] = 'hobby= "' . mysql_real_escape_string($hobby) . '"'; 
//если существует переменная station, то восстанавливаем запрос в сериализованном массиве    
if (isset($station) && ($station != ''))
  {$p_station=unserialize ($station);

$arr = array();
for ($i = 0; $i < count($p_station); $i++) 
  {   $arr[] = ' station LIKE "%' . mysql_real_escape_string($p_station[$i]) .'%"';
    }}
 


Ну и сам запрос к базе.

Код

$result = mysql_query("SELECT * FROM data WHERE " . implode(" AND ", $fields). " IN (SELECT id FROM data WHERE ".implode(" OR ",$arr).")",$db);

Первое условие:  вытащить значение ID в котором поле STATION имеет схожесть(LIKE) c переменными из массива $p_station через условие 'or'
Второе условие: вытащить из таблицы DATA всё, где ID имеют значения полученные выше и (через условие 'and') полe imya=$name, поле  flat=$adress и т.д
 Возможно, что вышеописанное возможно решить другими способами,  поэтому буду крайне признателен за Вашу помощь в решении даного вопроса.

Это сообщение отредактировал(а) maxim2009 - 13.12.2009, 15:14
PM MAIL   Вверх
comcon1
Дата 14.12.2009, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



я не понял, почему нельзя просто так:
Код

SELECT * 
from `data`
WHERE 
(station LIKE 'like1' or station LIKE 'like2') 
and imya = 'name' 
and flat = 'flat' 
and let = 'let' 
and hobby = 'hobby'


и я думал, стандартно исп-ть одинарные для текста все-таки..

Это сообщение отредактировал(а) comcon1 - 14.12.2009, 19:19


--------------------
PM MAIL   Вверх
maxim2009
Дата 14.12.2009, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.10.2009

Репутация: нет
Всего: нет



 Просто,не получается, потому что переменная может существовать, а может и нет (заполнил ли пользователь поле или нет в поисковой форме, что является необязательным условием). Поэтому, перед вставкой в SELECT, переменные проверяются на наличие.
 Но, в любом случае, за ответ спасибо.
P.S. Вопрос остается открытым.

PM MAIL   Вверх
Ипатьев
Дата 14.12.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 3
Всего: 37



Цитата(maxim2009 @  13.12.2009,  14:32 Найти цитируемый пост)
получаю ошибку. 

какую ошибку? Или вы считаете, что написанное в ошибке не важно?

Цитата(maxim2009 @  13.12.2009,  14:32 Найти цитируемый пост)
Ну и сам запрос к базе.

это не запрос. это кусок пхп кода. а нужно видеть именно запрос.

Добавлено через 37 секунд
ЗЫ. Вложенный селект здесь, разумеется, не нужен
PM MAIL   Вверх
maxim2009
Дата 19.12.2009, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.10.2009

Репутация: нет
Всего: нет



 Всё, проблема решена  smile 
 Всем спасибо !
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.