The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Синтаксис select"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"Синтаксис select" 
Сообщение от Wert76 Искать по авторуВ закладки(ok) on 22-Июл-05, 21:32  (MSK)
Сколько ничитал все не пойму как правильно составить запрос...
select * from tablename where ulica='$ulica' and dom='$dom';
Что должно стоять на месте $dom, просто эта переменная нужна, но не всегда,иногда она должна быть пустой,точнее что бы выбор от нее не зависел.
я встречал такое:
select * from tablename where ulica='$ulica' and dom=?;
типа должна выбирать улицу с любым домом,но неработает.
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Синтаксис select" 
Сообщение от аццкое Искать по авторуВ закладки on 23-Июл-05, 12:50  (MSK)
>Сколько ничитал все не пойму как правильно составить запрос...
>select * from tablename where ulica='$ulica' and dom='$dom';
>Что должно стоять на месте $dom, просто эта переменная нужна, но не
>всегда,иногда она должна быть пустой,точнее что бы выбор от нее не
>зависел.
>я встречал такое:
>select * from tablename where ulica='$ulica' and dom=?;
>типа должна выбирать улицу с любым домом,но неработает.
<?
$query = "SELECT * FROM tablename";
if (isset($ulica) && !isset($dom)) {                                                                  
$squery = $squery." where ulica like \"%$ulica%\"";                                                          
}                                                                                                                
                                                                                                                
if (!isset($ulica) && isset($dom)) {                                                                  
$squery = $squery." where dom like \"%$dom%\"";                                                          
}                                                                                                                
                                                                                                                
                                                                                                                
if (isset($ulica) && isset($dom)) {                                                                    
$squery = $squery." where ulica like \"%$ulica%\" and dom like \"%$dom%\"";                          
}
?>
вот как то так :)
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Синтаксис select" 
Сообщение от Cobold emailИскать по авторуВ закладки(??) on 23-Июл-05, 16:25  (MSK)
>Сколько ничитал все не пойму как правильно составить запрос...
>select * from tablename where ulica='$ulica' and dom='$dom';
>Что должно стоять на месте $dom, просто эта переменная нужна, но не
>всегда,иногда она должна быть пустой,точнее что бы выбор от нее не
>зависел.
>я встречал такое:
>select * from tablename where ulica='$ulica' and dom=?;
>типа должна выбирать улицу с любым домом,но неработает.

my %data=(ulica=>$ulica,dom=>$dom); # collect fieldnames and values
my @vals,@fields;

map{ # filter out the right field-value pars
if ($data{$_}){ # if a value is not a 0 or an empty string
  push @vals,$data{$_};
  push @fields,$_."=?"; # add a placeholder
}
}keys %data;

my $sql="select * from tablename where ".join(" and ",@fields); # concatenation of filtered fields

$dbh = DBI->connect($data_source, $username, $auth, \%attr); # for that example only
my $sth = $dbh->prepare($sql) || die $dbh->errstr;
$sth->execute(@vals) or die $dbh->errstr;
# Important: please, always do `->execute(@vals)' and not $sql="...ulica='${ulica}'..."
# It is a great thing of DBI to improve security against sql injections in that way, you should realy use it!

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру