Змінюй хід війни! Допомагай ЗСУ!

Вопрос по mysql

Статус: Офлайн
Реєстрація: 04.07.2008
Повідом.: 677
Вопрос по mysql

Есть запрос:
Select * from `mybase` where id='$id' and name=$name;
Но если у меня переменная $id будет пуста, как можно сделать чтобы тогда выбирало все данные где есть $name?А если $id будет заполнено тогда чтобы выполнялся полный запрос с выборкой того и того?
:)
 
Но если у меня переменная $id будет пуста, как можно сделать чтобы тогда выбирало все данные где есть $name?А если $id будет заполнено тогда чтобы выполнялся полный запрос с выборкой того и того?
:)

посылать разные запросы.
 
Есть запрос:
Select * from `mybase` where id='$id' and name=$name;
Но если у меня переменная $id будет пуста, как можно сделать чтобы тогда выбирало все данные где есть $name?А если $id будет заполнено тогда чтобы выполнялся полный запрос с выборкой того и того?
:)

Код:
$sql = 'select * from mybase where '.(!empty(id) ? 'id='.mysql_real_escape_string($id).' and ' : ' ').'name='.mysql_real_escape_string($name);

Как-то так.
 
почему вы решили, что это вопрос по mysql? что не позволяет проверить $id до выполнения запроса, а потом уже решить, в каком виде и какой запрос выполнять?

блин, уже успели отписать..
 
Ну а если там будет куча таких запросов, мне что везде писать if или тернарный оператор???А с помощью мускула можно как то?Например вместо $id поставить звездочку )))))

Вообще это форма поиска, по одному либо по нескольким либо по всем параметрам...

Вообще это форма поиска, по одному либо по нескольким либо по всем параметрам...
 
Останнє редагування:
даже если бы было можно поставить звездочку, вам нужно было бы сначала определить, нужно её ставить или нет.

можете составить строку запроса из отдельных фильтров по числу ваших полей для поиска. если соответствующая переменная не инициализирована - фильтр по этому полю не включаете. потом объедините эти фильтры через ' AND ' и возможно наступит щастье

БД хорошо работает с данными и пусть работает, не заставляйте её думать о том, что у вас там не так срослось в пхп-коде, что какие-то переменные оказались не инициализированными
 
Ну а если там будет куча таких запросов, мне что везде писать if или тернарный оператор???

запихните его в функцию и не ****айте мозги.
мне бы ваши проблемы.

Код:
$select = $this->select();
foreach ($filters as $name => $val) {
    $select->where("{$name} = :{$name})";
    $select->bind($name, $val);
}
 
Останнє редагування:
даже если бы было можно поставить звездочку, вам нужно было бы сначала определить, нужно её ставить или нет.

можете составить строку запроса из отдельных фильтров по числу ваших полей для поиска. если соответствующая переменная не инициализирована - фильтр по этому полю не включаете. потом объедините эти фильтры через ' AND ' и возможно наступит щастье

БД хорошо работает с данными и пусть работает, не заставляйте её думать о том, что у вас там не так срослось в пхп-коде, что какие-то переменные оказались не инициализированными

Про отдельные фильтры я не подумал.
Спасибо так все работает !:клас::yahoo:

запихните его в функцию и не ****айте мозги.
мне бы ваши проблемы.

Код:
$select = $this->select();
foreach ($filters as $name => $val) {
    $select->where("{$name} = :{$name})";
    $select->bind($name, $val);
}

Там много полей, и значения уже приходят в массиве в соответствующий класс

А кто то работал с Google maps??
 
del
 
Останнє редагування:
также в mysql есть хранимые процедуры sp
 
Назад
Зверху Знизу