2016-05-06 13 views
0

Ich habe grundlegende Skript für die Suchdatenbank meiner aktuellen PHP-Website geschrieben. Es zeigt mir Daten an, auch wenn ich kein Wort in das Suchfeld schreibe. Es zeigt viele Zeilen für jedes Keyword. und es wird nicht für neue Suche aktualisiert. Bitte überprüfen Sie und lassen Sie mich wissen, was ich hier verpasst habe? DankMySQL Datenbank Suche PHP-Ausgabe

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 
 
<?php 
 

 
include("config.php"); 
 
if($_SERVER["REQUEST_METHOD"] == "POST") 
 
{ 
 
mysql_query('SET character_set_results=utf8'); 
 
mysql_query('SET names=utf8'); 
 
mysql_query('SET character_set_client=utf8'); 
 
mysql_query('SET character_set_connection=utf8'); 
 
mysql_query('SET character_set_results=utf8'); 
 
mysql_query('SET collation_connection=utf8_general_ci'); 
 

 
$q=$_POST['q']; 
 
$q=mysql_escape_string($q); 
 
$q_fix=str_replace(" ","%",$q); // Space replacing with % 
 
$sql=mysql_query("SELECT qu_text FROM quotes WHERE qu_text LIKE N'%$qu_text%'"); 
 
} 
 
?> 
 
<html> 
 

 
<body> 
 
<form method="post" action=""> 
 
<input type="text" name="q" /> <input type="submit" value=" Search " /> 
 
</form> 
 
<?php 
 
while($row=mysql_fetch_array($sql)) 
 
{ 
 
$title=$row['qu_text']; 
 
echo '<div>'.$title.'</div>'; 
 
} 
 
?> 
 
</body> 
 
</html>

Antwort

0

Ihr SQL falsch ist.

Die Variable $qu_text ist nirgends initialisiert.

SELECT qu_text FROM quotes WHERE qu_text LIKE N'%%' 

Sie haben wie auf $q_text Wild Card hinzugefügt. Es erhält keinen Wert, daher zeigt es alle Ergebnisse.

Da die Abfrage immer:

Correct Abfrage:

$sql=mysql_query("SELECT qu_text FROM quotes WHERE qu_text LIKE '%$q%'"); 
+0

es funktioniert gut .... Danke –

+0

@RajubhaiRathod, Sie sind willkommen. – Pupil

0

Wie Sie eine Wildcard-Suche tun - wenn $ qu_text leer ist, Ihre Abfrage alles zurück. Wenn Ihre Anforderung nichts anzeigen soll, wenn der Suchparameter leer ist. Fügen Sie dann eine Bedingung ein und führen Sie die Abfrage nicht einmal durch, wenn $ qu_text null oder leer ist.

Auch ich denke, Sie müssen $ q_fix nicht $ qu_text an die Abfrage übergeben.

+0

Ich stimme zu. Zumindest trimmen und auf Eingabe prüfen wie: 'if (trim ($ _ POST ['q']! = '') {$ Sql ​​.....}' – jbrya029