Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Wyszukiwarka w PDO
Forum PHP.pl > Forum > Przedszkole
Mefiuu
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.
ZaXaZ
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ć.
ghost1511
Poza tym w Twoje zapytanie jest "wrażliwe" na wielkość liter.
Turson
$this->title jest tablicą!
Żeby wyświtetlić wyniki musisz je puścić w foreach
Mefiuu
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 ...
ghost1511
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.