【问题标题】:MYSQL Search - PHP FormMYSQL 搜索 - PHP 表单
【发布时间】:2011-08-02 14:29:54
【问题描述】:
<div class="searchbox">
    <form action="Search.php" method="get">
       <fieldset>
          <input id="$search" placeholder="Search for a Product" type="text" />
          <input id="submit" type="hidden" />
       </fieldset>
    </form>
</div>
<div id="content">
<ul>        
<?php

$host = "xxx"; 
$user = "xxx"; 
$pass = "xxx"; 
$db = "xxx"; 

mysql_connect($host, $user, $pass); 
mysql_select_db($db); 
unset($host,$user,$pass,$db); 


//$query = "SELECT produkt FROM checklist WHERE id IS "1";  
$query = "SELECT produkt FROM checklist WHERE id LIKE '%$search%'";  
$result = mysql_query($query); 
  while ($row = mysql_fetch_array($result)) 
{ 

echo "<li><span class='name'><b>$row[produkt]</b><br /></span><span class='comment'><i>Tierische Stoffe: </i>$row[tierisch]</span><i> Alkohol: </i>$row[alkohol]</span></span></li>";
  }  
?>

我的搜索框似乎有问题。目前我只看到数据库中的所有项目,我想查看我正在搜索的项目。

这样吗?

<div class="searchbox">
    <form action="Search.php" method="get">
       <fieldset>
          <input id="search" placeholder="Search for a Product" type="text" />
          <input id="submit" type="hidden" />
       </fieldset>
    </form>
</div>
<div id="content">
<ul>        
<?php

$host = "xxx"; 
$user = "xxx"; 
$pass = "xxx"; 
$db = "xxx"; 

mysql_connect($host, $user, $pass); 
mysql_select_db($db); 
unset($host,$user,$pass,$db); 

$search = $_POST['search'];

$query = "SELECT produkt FROM checklist WHERE id LIKE '%".$_POST['search']."%'";
//$query = "SELECT produkt FROM checklist WHERE id LIKE '%$search%'";  
$result = mysql_query($query); 

【问题讨论】:

  • 你能放 oyu 数据库模式吗?因为您在 where 条件中使用 id,不想使用产品名称或其他名称进行搜索? :)
  • 至少现在你发布了没有密码的问题;)
  • 所以数据库是 Pordukt - tierisch - alkohol
  • 如果对您有帮助,请将答案标记为正确。

标签: php mysql html search


【解决方案1】:
<input id="$search" placeholder

你需要$吗?它应该变成:

<input id="search" placeholder

要从搜索查询中访问 GET 变量,请使用 $_GET 数组,如下所示:

$query = "SELECT produkt FROM checklist WHERE id LIKE '%{$_GET['search']}%'";  

但为了安全起见并避免 mysql 注入,您可能希望这样做:

$search = mysql_real_escape_string($_GET['search']);
$query = "SELECT produkt FROM checklist WHERE id LIKE '%{$search}%'";  

编辑:忘记输入的名称属性:

<input name="search" id="search" placeholder="Search for a Product" type="text" />

然后在你的 php 中

$search = mysql_real_escape_string($_GET['search']);
$query = "SELECT produkt FROM checklist WHERE id LIKE '%{$search}%'";

$result = mysql_query($query); 
while ($row = mysql_fetch_array($result)){  
    echo "<li><span class='name'><b>{$row['produkt']}</b></span></li>";
} 

【讨论】:

  • 所以它应该看起来像 2.one?
  • @smirk,您在搜索表单中指定了 GET,您需要在我的解决方案中使用 $_GET 数组。我也建议你使用我的版本来防止 SQL 注入攻击。
  • 好的,只需使用我的代码的最后两行。我将清理后的搜索词分配给 $search,然后在查询中使用 $saerch。
  • 我刚刚把文件上传到fskonferenz.de/fabian.rar,也许你可以看看-.-
  • 您好像忘记设置输入字段的名称,我已经用您的固定代码更新了我的答案
【解决方案2】:

这个:

 <input id="$search" placeholder="Search for a Product" type="text" />

应该是(ID 中没有 $):

<input id="search" placeholder="Search for a Product" type="text" />

您的查询应该是:

$query = "SELECT produkt FROM checklist WHERE id LIKE '%".$_POST['search']."%'";  

表单中的变量被传递给脚本(在这种情况下它是同一个页面),因此您必须使用 $_POST 检索它们。

【讨论】:

  • 所以它应该看起来像 2.one?
  • 是的,应该。你不需要 $。
  • 另外,您需要在表单中将 method="get" 更改为 method="post"。
  • 没必要,只是另一种提交数据的方式。虽然惯例是在这种情况下使用 POST。
【解决方案3】:

您没有设置$search 的值。您需要更新您的表单以包含一个带有name="search" 的元素,并在查询之前添加一行PHP,如下所示:

$search = $_GET['search'];

您还需要转义输入以避免 SQL 注入。

【讨论】:

  • 所以它应该看起来像 2.one?
  • @smirk,正如 Jonno_FTW 所指出的,您的表单使用 GET,所以我更新了我的答案。您将需要更新您的第二个代码清单以使用我在上面发布的行。然后将您的查询改回原来的方式(使用$search 变量。
  • 这样吗? $search = $_GET['搜索']; $query = "SELECT produkt FROM checklist WHERE id LIKE '%".$_GET['search']."%'";
  • 第一部分是正确的。第二部分应该是:$query = "SELECT produkt FROM checklist WHERE id LIKE '%$search%'"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2019-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多