如何制作搜索功能? (用人们搜索的内容替换)

时间:2011-06-03 18:50:47

标签: php mysql sql function

这是我目前的代码:

$result = mysql_query("SELECT * FROM characters WHERE namn = 'Jargon'"); 

while($row = mysql_fetch_array($result)) 
  { 
  echo "<div class='content_left'>"; 
  echo "<div class='blue_text_header'>Information</div>"; 
  echo "<h1>"; 
  echo $row['Namn']; 
  echo "</h1>"; 

  echo "<br /><br /><br /><br /><br /><br /><br />"; 
  echo "<div class='red_text_header'>Obekräftade fall</div>"; 
  echo str_replace(',','<br />', $row['unconfirmed']); 

  echo "</div>"; 
  echo "<div class='content_right'>"; 

  echo "<div class='orange_text_header'>Andra namn</div>"; 
  echo str_replace(',','<br />', $row['Alias']); 

  echo "<br />"; 
  echo "<br /><br /><br /><br />"; 

  echo "<div class='green_text_header'>Bekräftade fall</div>"; 
  echo str_replace(',','<br />', $row['confirmed']); 
  } 

mysql_close($con);

如你所见,选择要输出的信息是“SELECT * FROM characters WHERE namn = 'Jargon'”,我希望用户确定应该输出什么,所以我想要一个简单的搜索表单,如果人们写的像“你好”我希望你的“术语”可以用你好的方式切换,如果你得到的话?

如果可以的话,你可以把我的搜索表单和post.php文件都包括在内吗?

3 个答案:

答案 0 :(得分:1)

$input_clean = mysql_real_escape_string($input);
$result = mysql_query("SELECT * FROM characters WHERE namn LIKE '%$input_clean%'"); 

如果$ input =“hello”,你会得到“你好”,“你好世界”,“我说你好”等结果,但你不会得到类似“hi bob”的东西。将此与brettz9关于HTML表单的答案相结合,您就可以获得一个搜索程序。

答案 1 :(得分:0)

您可能希望动态构建查询字符串,例如使用mysql_query(sprintf("SELECT * FROM characters WHERE namn = '%s'",mysql_real_escape_string($myInputVar)));构建您的查询。只需确保您使用mysql_escape_string正确地转义用户提供的输入,这样您就不会打开SQL注入攻击!

答案 2 :(得分:0)

将第一行更改为:

if (!isset($_GET['name']) { // Handle a missing name variable in some way 
    // (if you like you can even include the form on this page itself, allowing 
    //  the page to submit data back to itself, with this isset() check
    //  determining whether to show the form or process the form)
    print "You must enter a name";
    exit;
}
$result = mysql_query("SELECT * FROM characters WHERE namn = '".mysql_real_escape_string($name)."'");

...并添加以下表格:

<form action="post.php" method="get">
<label for="name">Name</label><input name="name" id="name"/>
<input type="submit"/>
</form>