【问题标题】:Two Search Fields (One a drop down list) - PHP & MYSQL Code两个搜索字段(一个下拉列表) - PHP & MYSQL 代码
【发布时间】:2011-07-22 20:23:02
【问题描述】:

当我正在拔头发时,我真的需要一些帮助!!! 我有两个字段,一个是输入框,另一个是下拉列表,用于搜索数据库并显示结果,但我似乎无法弄清楚......这是我到目前为止所拥有的......

这是实际的搜索表单:

<form id="myform" name="myform" action="<?php echo $_SERVER['PHP_SELF']?>"             method="get"><br />
<div class="T1"><br /><p></div> &nbsp;&nbsp;<input name="term" type="text" value="<?    php echo $_GET['searched']; ?>" size="10" maxlength="4" placeholder="e.g.     BS1"/> 
<select>
  <option value="">I feel like...</option>
  <option value="">Anything</option>
  <option value="Indian">Indian</option>
  <option value="Chinese">Chinese</option>
  <option value="Thai">Thai</option>
</select>
<input type="submit" name="submit" value="Go"/>
</form>

这是 PHP 代码:

<?php

if (isset($_GET['submit'])){
mysql_connect ("host", "user","password")  or die (mysql_error());
mysql_select_db ("database");
$term = $_GET['term'];  
$term = $_GET['option value'];  

}

else

$sql = mysql_query("select pagetitle from Restaurant where extra like '%$term%' and     showing like '1'"); 
$sql = mysql_query("select cuisine from Restaurant where cuisine like 'option value'     and showing like '1'"); 

echo Restaurants in $term and Cuisine $option value:";


}

while ($row = @mysql_fetch_array($sql)){
    echo ''.$row['pagetitle'];
    echo '<br/>';

}

}

?>

数据库有一个名为 Restaurant 的表,其中包含两个列,一个名为“Extra”,其中包含邮政编码,另一个名为“Cuisine”,其中包含美食。 我希望它返回与“Extra”和“Cuisine”匹配的餐厅列表 任何帮助将不胜感激。

【问题讨论】:

    标签: php mysql database search webforms


    【解决方案1】:
    • 在脚本中的任何位置(甚至在表单操作中)回显 $_SERVER['PHP_SELF'] 或 $_GET['searched'] 都会使您的站点受到 XSS 攻击。除非您先对其进行消毒,否则不要这样做。

    • 对于所有新项目,建议使用准备好的语句进行 mysql 查询。您可以使用 mysqli 或 PDO 执行此操作。您的代码只是通过您尝试执行的操作来请求 SQL 注入。

    • 您的代码中缺少一个括号,最后还有一些额外的括号。在 echo 之后,您还缺少引号。我不确定那里发生了什么。尝试解决这些问题。

    • mysql_fetch_array() 之前的 @ 是什么?在 PHP 中应该使用 @ 的情况确实很少。这通常表明您的代码中某处存在某种错误,应该修复而不是抑制。

    • 如果你想在 PHP 中使用它,你需要一个 name 属性。

    • 在你的 SQL 查询中,你不应该使用 LIKE 而应该使用 equals。此外,您不应引用整数。

    • 为什么要回显像 echo ''.$somevar; 这样的空字符串?只需回显变量即可。

    【讨论】:

      【解决方案2】:

      我不确定“显示”是什么意思,但我认为是可以显示的记录。首先要做的是更新您的查询:

      $sql = mysql_query("select pagetitle, cuisine from Restaurant where (extra like '%$term%') and     (showing like '1') and (cuisine like 'option value')");
      

      您还需要检查用户是否没有输入选项或选择“任何内容”,在这种情况下需要稍微更改查询:

      $sql = mysql_query("select pagetitle, cuisine from Restaurant where (extra like '%$term%') and     (showing like '1') and (cuisine like 'option value' or 'option value' = '')"); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-14
        • 2013-06-16
        • 1970-01-01
        • 2015-05-03
        • 2013-12-14
        相关资源
        最近更新 更多