webForumDet fria alternativet

Flera söktermer och MATCH AGAINST

Databaser & SQL

1 svar · 657 visningar · startad av prplxr

Medlem sedan juni 2012581 inlägg
Frågan#1

Hejsan, svejsan!

Sitter med en SQL-fråga som ska hämta ut data om företag utifrån två inputs, ett frisök och ett geografiskt. Jag vill nu matcha dessa mot ett fulltext-index. Vardera sökterm ska matchas mot varsitt fält och sedan ska resultatet sorteras efter relevans. Är detta genomförbart?

Den kod jag kommit fram till än så länge (som inte fungerar) är:

$keywords = @$_GET['what'];
$location = @$_GET['where'];
$query = $conn->Prepare("
	SELECT *, 
	MATCH(foretag) AGAINST(:keywords) AS kr,
	MATCH(stad) AGAINST(:location) AS lr
	FROM tblforetag 
	WHERE MATCH(foretag) AGAINST(:keywords)
	OR MATCH(stad) AGAINST(:location)
	");
$query->BindValue(':keywords', $keywords);
$query->BindValue(':location', $location);
$query->Execute();

Detta ger alltid noll resultat. Hur går jag vidare med detta? Förslag?

Mvh

Medlem sedan juni 2012581 inlägg
#2

Jag prövar nu med följande kod:

$keywords = @$_GET['what'];
$location = @$_GET['where'];
$locisset = $location != "" ? TRUE : FALSE;
$sql = "
	SELECT *, 
	MATCH(foretag) AGAINST(:keywords) AS kr
	FROM tblforetag 
	WHERE MATCH(foretag) AGAINST(:keywords)
	";
$sql .= $locisset ? "AND stad LIKE :location" : "";
$query = $conn->Prepare($sql);
$query->BindValue(':keywords', $keywords);
if($locisset) $query->BindValue(':location', "%$location%");
$query->Execute();

Det verkar fungera, men jag återkommer om det uppstår problem igen, var så säkra. ;-)

262 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)