2016-05-06 6 views
0

現在のPHPサイトの検索データベース用の基本スクリプトを書いています。私が検索ボックスに何も書き込まなくても、それは私のデータを示しています。新しい検索のためにリフレッシュされないようにします。私がこれで逃したことを確認して教えてください。 おかげMySQLデータベース検索PHPの問題

<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>

答えて

0

はあなたのSQLが間違っています。

変数$qu_textはどこでも初期化されません。

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

$q_textのようなワイルドカードを追加しました。それはいかなる価値も得られないので、すべての結果を示しています。

クエリはなってきていたよう:

正しいクエリ:あなたはワイルドカード検索を行っていると

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

ありがとう –

+0

@RajubhaiRathod、よろしくお願いいたします。 – Pupil

0

- $のqu_textが空の場合、クエリはすべてを返します。検索パラメータが空白の場合は、何も表示しないことが条件です。そして、$ qu_textがnullまたは空の場合に条件を入れて、クエリを実行しないでください。

また、$ q_fixではなく$ qu_textをクエリに渡す必要があると思います。

+0

私は同意します。少なくとも次のような入力をトリムしてチェックします: 'if($ _ POST ['q']!= ''){$ sql .....}' – jbrya029