我已经为我当前的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>
&#13;
答案 0 :(得分: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%'");
答案 1 :(得分:0)
在进行外卡搜索时 - 如果$ qu_text为空,则查询将返回所有内容。如果搜索参数为空,则无需显示任何内容。如果$ qu_text为null或为空,则将条件放入并且甚至不执行查询。
此外,我认为您需要将$ q_fix not $ qu_text传递给查询。