Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL] Pusta tablica wynikiem funkcji fetch_array()
Forum PHP.pl > Forum > Przedszkole
Fishu
Witam, ostatnio spotkałem się z dziwnym problemem tworząc wyszukiwarkę korzystającą z bazy mysql serwisu, na którym jest umieszczona. Nie umiem znaleźć problemu, kod mysql, który przetwarza wyszukiwarka po umieszczeniu w phpmyadmin działa bez problemu. Lecz gdy umieszczę go w mysql_fetch_array(mysql_query("kod")); zwraca pustą zmienną. O to kod php wyszukiwarki:

  1. <?php
  2. $q = $_GET['q'];
  3. include('../baza.php');
  4. ?>
  5.  
  6. <div style='padding: 3px; float: left; width: 100%;'>
  7.  
  8. <?php
  9.  
  10. $queries = split(' ', $q);
  11.  
  12. // Artykuly
  13.  
  14. $query = "SELECT * FROM `newsy` WHERE ";
  15.  
  16. for($a=0;$a<($count=count($queries));$a++)
  17. {
  18.  
  19.    $query .= "(`tytul` LIKE '%$queries[$a]%') ";
  20.              
  21.    if($a < --$count)
  22.    {
  23.        
  24.        $query .= "AND ";
  25.        
  26.    }
  27.    
  28. }
  29.  
  30. $query .= "OR ";
  31.  
  32. for($a=0;$a<($count=count($queries));$a++)
  33. {
  34.  
  35.    $query .= "(`tresc` LIKE '%$queries[$a]%') ";
  36.              
  37.    if($a < --$count)
  38.    {
  39.        
  40.        $query .= "AND ";
  41.        
  42.    }
  43.    
  44. }    
  45.  
  46. $query .= "OR ";
  47.  
  48. for($a=0;$a<($count=count($queries));$a++)
  49. {
  50.  
  51.    $query .= "(`autor` LIKE '%$queries[$a]%') ";
  52.              
  53.    if($a < --$count)
  54.    {
  55.        
  56.        $query .= "AND ";
  57.        
  58.    }
  59.    
  60. }    
  61.  
  62. $query .= "OR ";
  63.  
  64. for($a=0;$a<($count=count($queries));$a++)
  65. {
  66.  
  67.    $query .= "(`tresc_max` LIKE '%$queries[$a]%') ";
  68.              
  69.    if($a < --$count)
  70.    {
  71.        
  72.        $query .= "AND ";
  73.        
  74.    }
  75.    
  76. }    
  77.  
  78. $query .= " LIMIT 0 , 5";    
  79.  
  80. $query = mysql_query($query);
  81.  
  82. //print_r($fetchArray);
  83.  
  84. while($art = mysql_fetch_array($query));
  85. {
  86.    
  87.    echo "Wyniki:\n";
  88.    print_r($art);
  89.    
  90. }
  91.  
  92. ?>
  93.  
  94. </div>


Plik wyświetla wyłącznie "Wyniki:". Proszę o pomoc, jest to dla mnie bardzo ważne.

P.S.: Przy error_reporting(E_ALL); nie wyświetla żadnych błędów.

P.S.2: Tak przy okazji, mam pytanie odnośnie odtwarzania plików na stronie. Jest możliwość odtworzenia radia typu .pls na stronie ?
JoShiMa
Cytat(Fishu @ 25.02.2009, 21:17:48 ) *
Witam, ostatnio spotkałem się z dziwnym problemem tworząc wyszukiwarkę korzystającą z bazy mysql serwisu, na którym jest umieszczona. Nie umiem znaleźć problemu, kod mysql, który przetwarza wyszukiwarka po umieszczeniu w phpmyadmin działa bez problemu. Lecz gdy umieszczę go w mysql_fetch_array(mysql_query("kod")); zwraca pustą zmienną.


Rozumiem, ze wyświetliłeś sobie to zapytanie po jego utworzeniu i wkleiłeś do phpMyAdmin. Jeśli nie, to wyświetl to sobie bo wydaje mi się, ze możne brakować nawiasów.
Fishu
Umieszczałem, i działało wszystko bez problemu (w skrypcie zanim włożyłem do funkcji mysql_query(), wyświetlałem zapytanie i wklejałem do pma). Wynikiem były artykuły, w których treść zawierała słowa podobne do frazy, lecz po umieszczeniu tego zapytania w skrypcie php otrzymuje pustą tablice.
mike
Cytat(Fishu @ 25.02.2009, 19:17:48 ) *
P.S.: Przy error_reporting(E_ALL); nie wyświetla żadnych błędów.

error_reporting z wyświetlaniem błędów nie ma nic wspólnego.
error_reporting(E_ALL); - określa, że wszystkie błedy będą raportowane (nie myl z wyświetlane);
ini_set('display_errors', 1); - określa, że raportowane błedy będą wyświetlane
Fishu
To niestety nic nie daje, jeżeli zamiast pętli while wyświetlę wynik z funkcji mysql_fetch_array() otrzymam tylko pierwszy wynik. Pokażę wam przykładowy kod mysql wygenerowany przez wyszukiwarkę (fraza: Testowy artykul):
  1. SELECT * FROM `newsy` WHERE (`tytul` LIKE '%Testowy%') AND (`tytul` LIKE '%artykul%') OR (`tresc` LIKE '%Testowy%') AND (`tresc` LIKE '%artykul%') OR (`autor` LIKE '%Testowy%') AND (`autor` LIKE '%artykul%') OR (`tresc_max` LIKE '%Testowy%') AND (`tresc_max` LIKE '%artykul%') LIMIT 0, 5
JoShiMa
Ach mamuniu exclamation.gif!!

Przecież Ty masz za while średnik. Skutek jest taki, ze while wykonuje pusta komendę, czyli nic a potem wyświetla się blok określony w nawiasie klamrowym ale $art już jest puste...
Fishu
Dzięki wielkie, jak zwykle jakaś literówka. Niestety szukając nie zauważyłem tego.
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.