Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Prosta szukajka z PDO
Watt
post 14.02.2013, 11:10:19
Post #1





Grupa: Zarejestrowani
Postów: 372
Pomógł: 1
Dołączył: 13.06.2008

Ostrzeżenie: (0%)
-----


Witam serdenicznie,

Pisze w pdo od doścniedawna i nie opanowałem wszytskiego do końca.
Chciałem napisać prostą szukajkę, ale aby coś wyszukać można użyc każdego z trzech pól
- nazwa
- opis
- kategoria
albo tylko dwóch albo tylko jednego. Nietety nie mam pojęcia jak napisać Selecta, który będzie szukał po nazwie o ile istnieje, opisie o ile istnieje lub kategorii o ile ona istnieje. Jeżeli jedna z nich nie istnieje (jest pusta) to nie szuka po niej, a szuka po dwóch pozostałych. Umiem tylko napisać selecta do wyszukania wszytskich warosci:

Kod
        $powtor=$pdo->prepare('SELECT * FROM por_strona WHERE (nazwa=:par0 AND opis=:par1 AND kategoria=:par2)');
        $powtor->bindValue(':par0',$nazwa);
        $powtor->bindValue(':par1',$opis);
        $powtor->bindValue(':par2',$kategoria);
        $powtor->execute();
        $powrow=$powtor->fetch();


Czy mógłbym prosić Was o pomoc?
Go to the top of the page
+Quote Post
nospor
post 14.02.2013, 11:12:07
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Opis dla czystego mysql
http://nospor.pl/wyszukiwarka-zapytanie-za...d-warunkow.html
ale metoda postępowania bardzo podobna


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Watt
post 14.02.2013, 12:28:04
Post #3





Grupa: Zarejestrowani
Postów: 372
Pomógł: 1
Dołączył: 13.06.2008

Ostrzeżenie: (0%)
-----


Dzięki!

Przepraszam, że podbijam. Zrobiłem tak jak to było napsane wyżej, no i PDO nie chce mi losować wyników (nic nie zwraca)
Kod
if(isset($_POST['nazwa']) OR isset($_POST['opis']) OR isset($_POST['kategoria'])){
$nazwa = htmlspecialchars(strip_tags(stripslashes($_POST['nazwa'])));
$opis = htmlspecialchars(strip_tags(stripslashes($_POST['opis'])));
$kategoria = htmlspecialchars(strip_tags(stripslashes($_POST['kategoria'])));
$wh = array(); $wh_bind = array();

if (!empty($_POST['nazwa'])){
$wh[] = "nazwa LIKE '%:par0%' ";
$wh_bind[0] = 1;
}
if (!empty($_POST['opis'])){
$wh[] = "opis = :par1 ";
$wh_bind[1] = 1;
}
if (!empty($_POST['kategoria'])){
$wh[] = "kategoria = :par2 ";
$wh_bind[2] = 1;
}
if (!empty($wh)){
    $wh[] = "publiczny='1'";
    $where = implode(' and ', $wh);
}
echo "[".$where."]";

    try{
        $pdo = new PDO('mysql:host='.$configDBHost.';dbname='.$configDBName, $configDBUser, $configDBPass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
        $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $powtor=$pdo->prepare('SELECT * FROM por_strona WHERE ( '. $where .' ) Limit 5;');
        if($wh_bind[0]) $powtor->bindValue(':par0',$nazwa);
        if($wh_bind[1]) $powtor->bindValue(':par1',$opis);
        if($wh_bind[2]) $powtor->bindValue(':par2',$kategoria);
        $powtor->execute();
        print_r($powtor->fetch()."aa");


Wyrzuca tylko:
Cytat
[nazwa LIKE '%:par0%' and publiczny='1']aa

$powtor->fetch() jest puste, a gdy selectuje z bazy (przez phpmyadmin) wtedy wyniki istnieją. Co zrobiłem źle?
Go to the top of the page
+Quote Post
nospor
post 14.02.2013, 12:36:04
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




to źle zbudowales:
nazwa LIKE '%:par0%'

zauwaz ze dzieki pdo już nie mozesz dodawac apostrofów, jak to miales wczesniej:
nazwa = :par0

czyli nie:
nazwa LIKE '%:par0%'
a: nazwa = :par0
i powinno dzialac smile.gif

a jesli chcesz robic LIKE, to się zastanów jak to ma być poprawnie wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 08:09