2016-12-20 4 views
1

Ich habe ein FormularSuche nach verschiedenen Tabellen mit mehreren Worten

<form action="buscar.php" method="GET"> 
    <input type="text" name="q" /> 
</form> 

Und meine Seite, wo sie die Ergebnisse zeigen,

<?php 
require_once 'meekrodb.php'; 
$q = $_GET['q']; 
$results = DB::query("SELECT * FROM product_description WHERE description like '%$q%'"); 
foreach ($results as $row) { 
    echo $row['name']."<br>"; 
} 
?> 

Zum Beispiel habe ich diese Sätze in description:

My car is big and green 
My house is small and green 

Wenn ich nach green suche, kommen die 2 Ergebnisse heraus, aber wenn ich nach einemsuchenichts kommt heraus.

Das Problem ist, dass ich für die kontinuierlichen Text suchen habe zum Beispiel arbeiten ... My house is small...

Wie kann ich diese Abfrage verbessern? Danke

Antwort

0

Try GET variable.Or explodieren können Sie versuchen, mit CONCAT

Explode

$q = $_GET['q']; 
$word_array = explode(" ",$q); 
$sqlnames="SELECT * FROM product_description WHERE"; 
$count = 0; 
foreach($word_array as $value){ 
if($count == 0){ 
    $sqlnames .= " description LIKE '" . $value ."'"; 
} 
else{ 
    $sqlnames .= " OR description LIKE '" . $value ."'"; 
} 
$count = 1; 
$sqlnames .= " OR description LIKE '" . $value ."'";  
} 
$sqlnames .="LIMIT 20"; 

CONCAT

(so ähnlich)

zu spielen
$results = DB::query("SELECT * FROM product_description WHERE description LIKE '%$q%' OR description LIKE '%$q%' OR CONCAT(description, ' ', description) LIKE '%$q%' LIMIT 20"); 

Ich habe das nicht getestet, aber Sie können versuchen zu spielen.

+0

Es funktioniert nicht Kumpel. – GePraxa

Verwandte Themen