2017-02-03 1 views
1

Ich versuche, eine Suchfunktion auf meiner Website mit PHP und SQL zu erstellen. Ich versuche, es zu machen, so dass, wenn ich nach einem Stichwort suchen darin Elemente zeigt das Schlüsselwort passendeSQL Schlüsselwortsuche

Dies ist mein Database

Wenn ich war „Reis Huhn“ suchen, sie würden wieder beide Davida und roys, ich möchte, dass es nur Davids zurückgibt, weil es beide Wörter und nicht roys zusammenbringt, weil Roys nur Reis zusammenbringt

Thos ist mein gegenwärtiger Code.

$search = $_GET['query']; 

mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("axamenu"); 

$query = mysql_query("SELECT * FROM menu WHERE CONTAINS(items,'$.search')"); 
if(mysql_num_rows($query) >= 1) { 
    while($a = mysql_fetch_array($query)) { 
     echo "<a href='".$a['profileurl']."'>".$a['restaurant']."</a><p>".$a['menutype']."</p><hr/>"; 
    } 

} else { 
    echo "Oh no! Nothing was found."; 
} 
+0

zeigen Sie Ihre Tabelle Architektur mit Abrufen von Daten ....., die besser sein wird, Ihr Problem zu lösen –

+1

Warum verwenden Sie keine Gegenstände wie ‚%‚ $ Suche.‘% '? Hast du Probleme mit Gleichem? – rahulsm

+3

1. ** Benutze ** nicht verfallene und unsichere ** 'mysql_ *' -Funktionen. Sie sind seit PHP 5.5 (im Jahr 2013) veraltet und wurden in PHP 7 vollständig entfernt. Verwenden Sie stattdessen MySQLi oder PDO. 2. ** Sie sind offen für [SQL Injections] (http://php.net/manual/en/security.database.sql-injection.php) ** und sollten wirklich [vorbereitete Anweisungen] verwenden (http://php.net/manual/de/mysqli.quickstart.prepared-statements.php) anstelle der Verkettung Ihrer Abfragen, die verwendet werden können, wenn Sie die oben genannten MySQLi oder PDO verwenden. –

Antwort

-2

Versuchen Sie dies und lassen Sie uns, wenn das funktioniert.

select * from table_name where items like 'rice%' or items like 'chicken%'; 
+0

Mit Blick auf die Frage würde dies nicht tun, was das OP fragt. –

+0

Keine Notwendigkeit, unten wote, wenn das nicht funktioniert, sollte er derjenige sein, der den Kommentar hinzufügen wird :( –

+1

So funktioniert diese Website nicht. Wenn jemand sieht, dass eine Antwort eindeutig falsch ist (nicht die eigentliche Frage zu lösen) + erklärt nichts über _why_ das OP sollte es versuchen, dann Sie _sowo_ down_levote.Es ist Community getrieben und wir alle helfen, die guten und die schlechten Antworten auszusortieren. –

0

Sie können Ihre Abfrage auf diese Weise

$where = ''; 
$string = "thi sdas asd"; 
$search = explode(" ",$string); 
if(sizeof($search)>1) 
{ 
$where = "1=1"; 
    foreach($search=>$key as $val){ 
     $where .= "or items like %".$val."%"; 
    } 
} 
else 
{ 

$where = "items like %".$search[0]."%" 
} 

$query = mysql_query("SELECT * FROM menu WHERE ".$where); 
//rest of your code goes here 

Hinweis machen: Stop veraltet und unsicher mit mysql _ * - Funktionen. Sie sind seit PHP 5.5 (im Jahr 2013) veraltet und wurden komplett in PHP 7 entfernt. Verwenden Sie stattdessen MySQLi oder PDO

0

Wenn Sie nur möchten, david Ergebnis als "Reis Huhn", können Sie Ihre Zeichenfolge als Reis und teilen Huhn und Abfrage als

SELECT * from menu WHERE items REGEXP 'rice' AND items REGEXP 'chicken'

Sie werden nur ein Ergebnis

Hinweis erhalten: REGEXP mit dow verlangsamen n ergeben sich für die Massendaten

0
$search = $_GET['query']; 

mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("axamenu"); 

$query = mysql_query("SELECT * FROM menu WHERE 
items LIKE '%".$search."%'"); 
if(mysql_num_rows($query) >= 1) 
{ 
    while($a = mysql_fetch_array($query)) 
    { 
     echo "<a href='".$a['profileurl']."'>".$a['restaurant']."</a><p>".$a['menutype']."</p><hr/>"; 
    } 

} 
else 
{ 
    echo "Oh no! Nothing was found."; 
}