webForumDet fria alternativet
Logga in / Bli medlem

mysql_field_count?

Databaser & SQL

8 svar · 342 visningar · startad av dr_damir

Medlem sedan mars 2003132 inlägg
Trådstart#1

Tjena allihopa!

Jag sitter här och klurar på min sql fråga som jag senare ska beräkna hur många poster som hittades.
Så här ser sql-frågan ut:

$sql = "SELECT * FROM tabell 
WHERE MATCH(namn,extra,kategori) AGAINST(+$var) IN BOOLEAN MODE ORDER by namn ASC";

orden innanför AGAINST har genererats tidigare i en loop.
ex. *malin*' +'*konny*'

Först när jag ska räkna posterna klagas det.

Jag tänkte först såhär:

mysql_result(mysql_query("select count(*) from tabell 
WHERE MATCH(namn,extra,kategori) AGAINST(+$var) IN BOOLEAN MODE"), 0, 0)

Där klagar den:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource

Så, jag tänkte jag skulle testa en annan mysql-funktion. Nämligen mysql_field_count() . Men då får jag felmeddelandet att den funktionen inte finns.

Någon som kan hjälpa mig för nu vet jag inte hur jag ska tänka.

tack!

Medlem sedan dec. 200012 464 inlägg
#2

Får du något felmeddelande?

mysql_query("select count(*) from tabell 
WHERE MATCH(namn,extra,kategori) AGAINST(+$var) IN BOOLEAN MODE") or die(mysql_error());
Medlem sedan mars 2003132 inlägg
#3

Nä, på den raden får jag inga felmeddelanden.

Men inte heller får jag några resultat ur min databas trots att jag vet att jag söker på saker jag vet finns.

Medlem sedan dec. 200012 464 inlägg
#4

Det fel du får beror ju på att mysql_query returnerar 0. Generellt om du vill hämta värden så är det bättre att använda t.ex. mysql_fetch_row än mysql_result

$c = mysql_query("select count(*) from tabell 
WHERE MATCH(namn,extra,kategori) AGAINST(+$var) IN BOOLEAN MODE") or die(mysql_error());
$r = mysql_fetch_row($c);
$rows = $r[0];
Medlem sedan mars 2003132 inlägg
#5
mysql_fetch_row(mysql_query("select count(*) 
from tabell WHERE MATCH(namn,extra,kategori) 
AGAINST(+$var) IN BOOLEAN MODE" 
or die(mysql_error())));

Denna ger mig felet:

mysql_fetch_row(): supplied argument is not a valid MySQL result resource

Men, hur kan mysql_query ge mig ett värde på 0?
jag vet ju att de ord jag söker finns i min databas!
är det fel på min fråga?

Medlem sedan mars 2003132 inlägg
#6

tillägg:

Om jag använder mig utav mysql_result() för att få fram resultatet från min fråga så ger den mig felet:

Wrong parameter count for mysql_result()
Medlem sedan dec. 200012 464 inlägg
#7

Dina parenteser är fel. Varför försöker du slå ihop allt till en rad? Det är mycket enklare att se om du skriver varje anrop för sig.

Medlem sedan mars 2003132 inlägg
#8

Tack Lars!

Det var en del missar men nu funkar det mesta.
En fråga, jag sätter en * för att söka på mer än bara just ordet i sökningen. Men så testade jag med *a* eller bara **. Då hittar den ingenting alls. varför? går det inte att ha * både bakom och framför sökordet?

Medlem sedan mars 2003132 inlägg
#9

tjenna!

igen, ingen som vet det...hur man gör en sökning "vadsom helst" med match against?

i vanliga selectfrågor har jag för mig man använder % för att får fram vad som helst men i match...against använder man väl *?

Men det fungerar inte att skriva ex. *a* för då hittas bara saker som börjar på a. inte saker som 'bara' innnehåller a.

257 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)