[英]Two Search Fields (One a drop down list) - PHP & MYSQL Code
我真的很想得到一些帮助,因为我正在拔头发,,。 我有两个领域。 一个是输入框,另一个是搜索数据库并显示结果的下拉列表。 但是我似乎无法弄清楚......这是我到目前为止所拥有的......
这是实际的搜索表单:
<form id="myform" name="myform" action="<?php echo $_SERVER['PHP_SELF']?>" method="get"><br />
<div class="T1"><br /><p></div> <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”,其中包含美食。 我希望它返回与“额外”和“美食”相匹配的餐厅列表。任何帮助将不胜感激。
在脚本中的任何位置(甚至在表单操作中)回显 $_SERVER['PHP_SELF'] 或 $_GET['searched'] 都会使您的站点受到 XSS 攻击。 除非您先对其进行消毒,否则不要这样做。
对于所有新项目,建议对 mysql 查询使用准备好的语句。 您可以使用 mysqli 或 PDO 来执行此操作。 您的代码只是要求 SQL 注入您正在尝试做的事情。
您的代码中缺少一个括号,最后还有一些额外的括号。 在 echo 之后,您还缺少引号。 我不确定那里发生了什么。 试着把那些修好。
mysql_fetch_array() 之前的@ 是什么? 在 PHP 中使用 @ 的情况确实很少。 这通常表明您的代码中某处存在某种错误,应该修复而不是抑制。
如果您希望能够在 PHP 中使用它,您需要一个名称属性。
在您的 SQL 查询中,当您应该使用 equals 时,您不应该使用LIKE
。 此外,您不应引用整数。
为什么要回显一个空字符串,例如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' = '')");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.