两个搜索字段(一个是下拉列表)-PHP&;MYSQL代码

两个搜索字段(一个是下拉列表)-PHP&;MYSQL代码,php,mysql,database,search,webforms,Php,Mysql,Database,Search,Webforms,我真的很想在这方面得到一些帮助,因为我正在拔头发!!! 我有两个字段,一个是输入框,另一个是下拉列表,用于搜索数据库并显示结果,但我似乎无法找到它…这是我到目前为止得到的 这是实际的搜索表单: <form id="myform" name="myform" action="<?php echo $_SERVER['PHP_SELF']?>" method="get"><br /> <div class="T1"><br

我真的很想在这方面得到一些帮助,因为我正在拔头发!!! 我有两个字段,一个是输入框,另一个是下拉列表,用于搜索数据库并显示结果,但我似乎无法找到它…这是我到目前为止得到的

这是实际的搜索表单:

<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>
  • 在脚本中的任何位置(甚至在表单操作中)回显$_SERVER['PHP_SELF']或$_GET['searched']都会使您的站点受到XSS攻击。除非先对它们进行消毒,否则不要这样做

  • 对于所有新项目,建议使用准备好的语句进行mysql查询。您可以使用mysqli或PDO来实现这一点。您的代码只是根据您尝试执行的操作的外观来请求SQL注入

  • 您的代码中缺少一个括号,并且在末尾有一些额外的括号。同样在echo之后,您缺少一个引号。我不知道那里发生了什么事。试着把那些修好

  • @before mysql_fetch_array()有什么用?在PHP中使用@的情况确实很少。它通常是一个指示器,表明代码中的某个地方存在某种错误,应该加以修复而不是抑制

  • 如果希望能够在PHP中使用名称属性,则需要该属性

  • 在SQL查询中,当您应该使用equals时,不应该像使用
那样使用
。此外,不应引用整数

  • 为什么要回显一个空字符串,如
    echo'.$somevar?只需回显变量即可

  • 我不确定“显示”是为了什么,但我假设这是一条可以显示的记录。首先要做的是更新查询:

    $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' = '')"); 
    
    $sql = mysql_query("select pagetitle, cuisine from Restaurant where (extra like '%$term%') and     (showing like '1') and (cuisine like 'option value' or 'option value' = '')");