Immer mit * enden: Du könntest nach jedem onkeyup (Event aus JavaScript) stets bestehende * aus Deinem Feld entnehmen (bzw. direkt bei Eingabe unterbinden) und über die gleiche Funktion am Ende automatisch ein * eintragen (wenn keins da ist). Warum es unbedingt sichtbar sein muss, ist ganz allein erstmal Deine Sache.

(denn: wie sucht einer, der wirklich nur "Auto" haben will, wenn Du stets * dranhängst und auch "Autotür" lieferst?)
Die Datenbankversion hat mit dem * gar nix zu tun - der muss serverseitig mit einem % ersetzt werden. Ein Suchbefehl über ein Feld könnte fiktiv so (simpel) ausschauen:
SELECT `foo` FROM `bar` WHERE `foo` LIKE "BEGRIFF%" LIMIT N;
N steht hierbei für eine natürliche Zahl - aka Ganzzahl zwischen 1 - was-Du-benötigst.

(wäre also von Dir zu ersetzen) Dieser Befehl sucht Dir alle Datensätze, die im Feld (Typ String) "foo" mit BEGRIFF starten - und alle, die mit dem Teil "BEGRIFF" beginnen (bspw. "Begrifflichkeit").
Um einen richtig guten Vergleich zu haben, solltest Du den ankommenden Suchbegriff vollständig klein schreiben - und mit der Datenbank (LOWER() war's glaube ich) ebenfalls auf "klein" alles machen. Damit ist egal wie der User es eintippt (bspw. "auto" gibt die gleichen Ergebnisse wie "AUTo", "aUTO" usw.).
Wie sowas als Code ausschaut:
- HTML5 Seite mit Formular und entsprechender Eingabemöglichkeit
- Eingabefeld hat Event-Listener "onkeyup" (JavaScript) dran, der Dir Dein * anhängt und eingegebene * vom Benutzer entfernt/abfängt
- submit oder asynchron schickt den Begriff per POST oder AJAX an den Server
- Server übernimmt Validierung des Begriffes (hier gibt es schöne Sachen in PHP!)
- Verbindung an Datenbank
- Übergabe des Queries aus PHP an Datenbank
- Ergebnis auswerten
- Ausgabe aufbereiten
- Anzeige
Glaube, dass ich nichts vergessen habe.
