Je kunt ook eerst FULLTEXT gaan zoeken, en als daar geen resultaten uit komen, gebruik je LIKE. Komen er wel resultaten dan werd niet voldaan aan de 'voorwaarden'. Maar dan kun je alsnog de resultaten van LIKE weergeven. Zijn er geen resultaten, dan is de kans groot dat het zoekwoord er gewoon niet in staat.
Vind het wel een goed idee van Lasse, als er bijvoorbeeld geen resultaten zijn de keuze geven om ook 'slordig' te zoeken.
Maar Herjan, als jij die voorwaarde niet handig vind, ga ik er stiekem vanuit dat het voor kleine hoeveelheden data is, dan heb je aan FULLTEXT gewoon niet zoveel denk ik.
Het is vooral voor kleine stukjes tekst. Het is namelijk voor een kleine webshop voor poppenkleertjes, en daarover valt nou eenmaal weinig te vertellen. De kans dat een zoekwoord er meer dan drie keer in voorkomt is dus niet erg groot...
Dan zou ik gewoon LIKE gebruiken, met als optie om alleen op hele woorden te zoeken.
Dan wordt je query zo:
<?php
$sql = "SELECT velden FROM tabel WHERE veld LIKE '% ".$zoekwoord." %'";
?>
Edit: Dit is dus die extra optie, als die niet aangevinkt is de query uiteraard zonder die spaties.
Ik zou het inderdaad ook doen zoals WillemJan voorstelt..
Als je via FULLTEXT gaat zoeken, krijg je een query zoals:
<?
$sql = "SELECT velden FROM tabel WHERE MATCH(veldnaam) AGAINT('%zoekterm'%)";
?>
Als je een kleine webshop hebt komt iets al snel drie keer terug inderdaad. Je kunt dit volgens mij aanpassen in het config bestand van MySQL maar ik denk dat je het gewoon beter op de traditionele manier kan doen als je geen enorme database hebt.
Aanvulling: als je FULLTEXT wilt gebruiken moet je wel een FULLTEXT index aanmaken. Bij MATCH moet je dan alle veldnamen opnoemen die in die index voorkomen.