Marcin Huta

Marcin Huta IT Developer,
Performance Testing,
Administrator
systemów IT

Temat: Wyszukiwarka w PHP

Zbudowałem wyszukiwarkę na podstawie art. http://www.dmxzone.com/go?14246&LinkFile=page1.htm , kto po kroku. Jednak na końcu tej drogi pojawia się problem

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\wyszukaj_test_1\search.php on line 25

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\wyszukaj_test_1\search.php on line 34

linie kodu:
25:
if($results = mysql_num_rows($sql_query) != 0)

34:
$results = mysql_num_rows($sql_query);

Z czego wynika problem?

konto usunięte

Temat: Wyszukiwarka w PHP

a co masz w $sql_query ?

może null'a ?Cezary H. edytował(a) ten post dnia 29.05.12 o godzinie 12:32
Marcin Huta

Marcin Huta IT Developer,
Performance Testing,
Administrator
systemów IT

Temat: Wyszukiwarka w PHP

  $sql_query = mysql_query("SELECT * FROM news WHERE MATCH(title,article) AGAINST('$search_term')");
//additional check. Insurance method to re-search the database again in case of too many matches (too many matches cause returning of 0 results)
if($results = mysql_num_rows($sql_query) != 0)
{
$sql = "SELECT * FROM news WHERE MATCH(title,article) AGAINST('$search_term') LIMIT $first_pos, $RESULTS_LIMIT";
$sql_result_query = mysql_query($sql);
}
else
{
$sql = "SELECT * FROM news WHERE (title LIKE '%".mysql_real_escape_string($search_term)."%' OR article LIKE '%".$search_term."%') ";
$sql_query = mysql_query($sql);
$results = mysql_num_rows($sql_query);
$sql_result_query = mysql_query("SELECT * FROM news WHERE (title LIKE '%".$search_term."%' OR article LIKE '%".$search_term."%') LIMIT $first_pos, $RESULTS_LIMIT ");
}
$stop_search = getmicrotime();
//calculating the search time
$time_search = ($stop_search - $start_search);
Marcin Huta edytował(a) ten post dnia 29.05.12 o godzinie 13:22

konto usunięte

Temat: Wyszukiwarka w PHP

zrób

var_dump($sql_query)

tuż przed 25 linijką,
i jak wklejasz kod to używaj [ code ]
Marcin Huta

Marcin Huta IT Developer,
Performance Testing,
Administrator
systemów IT

Temat: Wyszukiwarka w PHP

OK,

Dałem
 var_dump($sql_query); 
w linii 25.

Teraz mam w wyniku:

bool(false)
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\wyszukaj_test_1\search.php on line 26

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\wyszukaj_test_1\search.php on line 35

konto usunięte

Temat: Wyszukiwarka w PHP

no właśnie,
mysql_num_rows przyjmuje argument resource Ty masz null

poczytaj :
http://php.net/manual/en/function.mysql-num-rows.php

i jeszcze tu:
http://de3.php.net/manual/en/function.mysql-query.php

masz jakiś błąd w zapytaniu
Marcin Huta

Marcin Huta IT Developer,
Performance Testing,
Administrator
systemów IT

Temat: Wyszukiwarka w PHP

Problem był w zapytaniu. ;-)

Małą wadą rozwiązania SELECT * FROM news WHERE MATCH(title,article) AGAINST('$search_term') jest fakt, że działa poprawnie dla znaków w zapytaniu > 3. Aby to zmienić należy w pliku konfiguracyjnym mysql'a /etc/my.cnf i ustawić parametr ft_min_word_len na wartość np. ft_min_word_len=3 , gdzie liczba wskazuje ilośc wymaganych znaków.

Następna dyskusja:

[php] wyszukiwarka




Wyślij zaproszenie do