Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Wyszukiwarka w PDO
Mefiuu
post 4.04.2014, 22:12:25
Post #1





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


Witam serdecznie forumowiczów.

Zwracam się z prośbą o pomoc. Piszę sobie mini portal, w którym chcę wyszukiwać pewne informacje przez formularz czyli standardowa wyszukiwarka. Wszystko staram się pisać w stylu zgodnym z PDO ... no i tu rodzi się problem. Mam w klasie taką funkcję:

  1. public function search($title) {
  2. $stmt = $this->pdo->prepare("SELECT * FROM `articles` WHERE `title` LIKE :title ORDER BY `id` DESC LIMIT 15");
  3.  
  4. $title = "%".$title."%";
  5.  
  6. $stmt->bindValue(':title', $title, PDO::PARAM_STR);
  7.  
  8. $stmt->execute();
  9.  
  10. while ($resource = $stmt->fetch(PDO::FETCH_ASSOC)) {
  11. $this->title[] = $resource;
  12. }
  13.  
  14. $stmt->closeCursor();
  15.  
  16. return $this->title;
  17.  
  18. }


którą na stronie wywołuję tak:

  1. if (isset($_POST['search'])) {
  2. $main->search($_POST['title']);
  3. }


jednak to kompletnie nie działa... wcześniej wywołuję funkcję która pobiera wszystkie artykuły i mimo że cokolwiek wpisuję w pole wyszukiwania to nie znajduje mi nic, chociaż są wpisy o takich tytułach jak podaję. Starałem się przeprowadzić analizę błędów poprzez jakieś komunikaty - nic nie pomaga. Wygląda na to, że wszystko ładnie przechodzi przez funkcję ale nie zwraca żadnych wyników ? Czy jest jakiś błąd logiczny w moim bindowaniu parametru ? Przyznam, że nigdy nie pisałem czegoś takiego w PDO, a nie chcę wracać do mysql_*.

Z góry dziękuję za pomoc, pozdrawiam.
Go to the top of the page
+Quote Post
ZaXaZ
post 4.04.2014, 23:25:08
Post #2





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(Mefiuu @ 4.04.2014, 23:12:25 ) *
  1. if (isset($_POST['search'])) {
  2. $main->search($_POST['title']);
  3. }


jednak to kompletnie nie działa... wcześniej wywołuję funkcję która pobiera wszystkie artykuły i mimo że cokolwiek wpisuję w pole wyszukiwania to nie znajduje mi nic, chociaż są wpisy o takich tytułach jak podaję. Starałem się przeprowadzić analizę błędów poprzez jakieś komunikaty - nic nie pomaga. Wygląda na to, że wszystko ładnie przechodzi przez funkcję ale nie zwraca żadnych wyników ? Czy jest jakiś błąd logiczny w moim bindowaniu parametru ? Przyznam, że nigdy nie pisałem czegoś takiego w PDO, a nie chcę wracać do mysql_*.

Z góry dziękuję za pomoc, pozdrawiam.



w wywołaniu przed $main dodaj echo.
powinno wtedy coś zwrócić ;-)
z podkreśleniem na powinno. Bo nie musi... a niechce mi się teraz całego skryptu analizować.


--------------------
Go to the top of the page
+Quote Post
ghost1511
post 5.04.2014, 06:47:44
Post #3





Grupa: Zarejestrowani
Postów: 186
Pomógł: 18
Dołączył: 2.09.2010

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


Poza tym w Twoje zapytanie jest "wrażliwe" na wielkość liter.
Go to the top of the page
+Quote Post
Turson
post 5.04.2014, 09:15:14
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


$this->title jest tablicą!
Żeby wyświtetlić wyniki musisz je puścić w foreach
Go to the top of the page
+Quote Post
Mefiuu
post 5.04.2014, 09:45:13
Post #5





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


ech nie wyświetla za wiele, tylko informację że jest to tablica (bo rzeczywiście jest).

Wiem, wiem, iż jest to tablica, ja na początku tylko wywołuję tę funkcję a poniżej w odpowiednim miejscu ją wyświetlam za pomocą foreach();

Jednak jak zaraz przy wywołaniu potraktowałem ją pętlą foreach to niestety wyświetla mi wszystkie artykuły a nie tylko wybrane. Czyli wychodzi na to że funkcja działa ale nie tak jak powinna ...
Go to the top of the page
+Quote Post
ghost1511
post 5.04.2014, 11:01:23
Post #6





Grupa: Zarejestrowani
Postów: 186
Pomógł: 18
Dołączył: 2.09.2010

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


Wygląda na to że ZAPYTANIE działa, ale nie tak jak powinno wink.gif

Poza tym w PDO jest funkcja fetchAll do pobrania wszystkich rekordów z zapytania.

Ten post edytował ghost1511 5.04.2014, 11:06:45
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: 26.04.2024 - 15:20