---
title: "Hitta träffar på hela ord, inte delar av ord."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/186646-hitta-träffar-på-hela-ord-inte-delar-av-ord"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Skatedragon"
published: "2011-04-12T14:26:05.000Z"
updated: "2011-04-13T09:33:06.000Z"
replies: 1
views: 1029
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/186646-hitta-träffar-på-hela-ord-inte-delar-av-ord"
---

# Hitta träffar på hela ord, inte delar av ord.

## #1 — Skatedragon, 2011-04-12T14:26Z

Hej!

Jag har två tabeller i en mysql-databas. 
Den ena innehåller textbaserade artiklar. 
Den andra innehåller flera poster med ord som ska hittas i artiklarna. 

För att hitta dessa använde jag följande SQL-sats.

```php
//hämtar varje post från ord-tabellen och loopar dessa

$sql = "SELECT id,url,title FROM posts WHERE `desc` LIKE '%".$q2["names"]."%' AND time > '".strtotime($q2["lastchecked"])."'" or exit(mysql_error());

//loopar ut resultatet från posts
```

Problemet är att den matchar t.ex "Abba" med "tabbar", och jag vill bara att den ska matcha om exakt rätt ord hittas. 

Dessvärre innehåller kolumnen names precis som det kan antas flera namn separerade med kommatecken.. tex namn1,namn2,namn3.

Jag har kommit en bit på vägen, men lyckas inte få till SQL-satsen riktigt. Så som det är nu hittas inga resultat alls mot tidigare ca 300.

```php
 $sql = "SELECT id,url,title FROM posts WHERE (`desc` REGEXP '[[:<:]]" . str_replace(",","[[:>:]]' OR `desc` REGEXP '[[:<:]]",$q2["names"])."[[:>:]]') AND (`desc` REGEXP '[[:<:]]" . str_replace(",","[[:>:]]' OR `desc` REGEXP '[[:<:]]",$q2["relatedto"])."[[:>:]]') AND time > '".strtotime($q2["lastchecked"])."'" or exit(mysql_error());
```

Någon som har något förslag? Finns det en bättre lösning?

Permalänk: https://www.webforum.nu/p/186646

## #2 — danjel, 2011-04-13T09:33Z

Om du använder MyISAM kan du använda FullText index....

SELECT \* FROM test WHERE MATCH (desc) AGAINST('$string');

CREATE TABLE test (   desc TEXT,   FULLTEXT(desc) ) ENGINE=MyISAM;

Permalänk: https://www.webforum.nu/p/2274238

---

Tråden på webben: https://www.webforum.nu/amne/php/186646-hitta-träffar-på-hela-ord-inte-delar-av-ord
