Php 以HTML格式查询多个选定选项的MySql
我已经搜寻过关于我的问题的类似帖子和信息,但找不到任何有用的。我在一个网页上有一个表单,它由5个下拉菜单组成,每个菜单都有不同的选项,用户将从每个下拉菜单中选择一个选项,然后点击提交按钮。此时,我想在数据库上运行一个查询,以查找与所有“选定”选项的匹配条件。现在我不需要匹配所有字段,因为我只是在测试,所以我只想检查一个字段。我使用的表格如下所示:Php 以HTML格式查询多个选定选项的MySql,php,mysql,database,forms,Php,Mysql,Database,Forms,我已经搜寻过关于我的问题的类似帖子和信息,但找不到任何有用的。我在一个网页上有一个表单,它由5个下拉菜单组成,每个菜单都有不同的选项,用户将从每个下拉菜单中选择一个选项,然后点击提交按钮。此时,我想在数据库上运行一个查询,以查找与所有“选定”选项的匹配条件。现在我不需要匹配所有字段,因为我只是在测试,所以我只想检查一个字段。我使用的表格如下所示: <div class="section-two"> <div class="row bound-box">
<div class="section-two">
<div class="row bound-box">
<div class="col-lg-8 col-md-8 col-sm-8 col-lg-offset-2 col-md-offset-2 col-sm-offset-2 main clearfix">
<form id="nl-form" class="nl-form" action="searchpubs.php" method="post">
I feel to visit
<select id="category">
<option value="anywhere" selected>anywhere</option>
<option value="pub">a pub</option>
<option value="nightclub">a nightclub</option>
<option value="brewery">a brewery</option>
<option value="stripclub">a gentleman's club</option>
</select>
<br/>that
<select id="foodDrink">
<option value="food" selected>serves food</option>
<option value="drinks">serves drinks only</option>
</select>
and has
<br/>
<select id="extra">
<option value="poolTable" selected>a pool table</option>
<option value="danceFloor">a dance floor</option>
<option value="tv">tv's</option>
<option value="everything">everything</option>
<option value="anything">anything</option>
</select>
. It's within<br>
<select id="distance">
<option value="anyDistance" selected>any distance</option>
<option value="5">5 km</option>
<option value="10">10 km</option>
<option value="15">15 km</option>
<option value="20">20 km</option>
</select>
from me<br> and is open
<select id="hours">
<option value="late" selected>past 12 a.m.</option>
<option value="allDay">all day</option>
<option value="weekdays">on weekdays</option>
<option value="sundays">on sundays</option>
<option value="anytime">anytime</option>
</select>
<div class="nl-submit-wrap">
<button class="nl-submit" type="submit">Find Your Pub</button>
</div>
<div class="nl-overlay"></div>
</form>
</div><!--column-->
</div><!-- row -->
</div><!--section-two-->
<?php
//DATABASE CONNECTION INFO BELOW:
$hostname="hostname";
$database="dbname";
$username="myusername";
$password="mypassword";
$link = mysql_connect($hostname, $username, $password);
if (!$link) {
die('Connection failed: ' . mysql_error());
}
$db_selected = mysql_select_db($database, $link);
if (!$db_selected) {
die ('Can\'t select database: ' . mysql_error());
}
mysql_close($link);
?>
我想去参观一下
在任何地方
酒吧
夜总会
酿酒厂
绅士俱乐部
那
提供食物
只供应饮料
而且
台球桌
舞池
电视的
一切
任何东西
. 在
任何距离
5公里
10公里
15公里
20公里
从我这里
并且是开放的
上午12点多。
整天
平日
星期天
随时
找到你的酒吧
例如,如果用户在select id“foodDrink”下选择了选项“services food”,我想在数据库中运行一个查询,在标有“food”的列中搜索该列中包含“yes”的任何行。然后在浏览器中显示所有匹配条件。现在它不需要格式化等,我只想在浏览器中看到它,以确保查询工作。有谁能帮我解决这个问题,并且可能理解如何在准备好时添加额外的查询
我当前正在连接数据库,如下所示:
<div class="section-two">
<div class="row bound-box">
<div class="col-lg-8 col-md-8 col-sm-8 col-lg-offset-2 col-md-offset-2 col-sm-offset-2 main clearfix">
<form id="nl-form" class="nl-form" action="searchpubs.php" method="post">
I feel to visit
<select id="category">
<option value="anywhere" selected>anywhere</option>
<option value="pub">a pub</option>
<option value="nightclub">a nightclub</option>
<option value="brewery">a brewery</option>
<option value="stripclub">a gentleman's club</option>
</select>
<br/>that
<select id="foodDrink">
<option value="food" selected>serves food</option>
<option value="drinks">serves drinks only</option>
</select>
and has
<br/>
<select id="extra">
<option value="poolTable" selected>a pool table</option>
<option value="danceFloor">a dance floor</option>
<option value="tv">tv's</option>
<option value="everything">everything</option>
<option value="anything">anything</option>
</select>
. It's within<br>
<select id="distance">
<option value="anyDistance" selected>any distance</option>
<option value="5">5 km</option>
<option value="10">10 km</option>
<option value="15">15 km</option>
<option value="20">20 km</option>
</select>
from me<br> and is open
<select id="hours">
<option value="late" selected>past 12 a.m.</option>
<option value="allDay">all day</option>
<option value="weekdays">on weekdays</option>
<option value="sundays">on sundays</option>
<option value="anytime">anytime</option>
</select>
<div class="nl-submit-wrap">
<button class="nl-submit" type="submit">Find Your Pub</button>
</div>
<div class="nl-overlay"></div>
</form>
</div><!--column-->
</div><!-- row -->
</div><!--section-two-->
<?php
//DATABASE CONNECTION INFO BELOW:
$hostname="hostname";
$database="dbname";
$username="myusername";
$password="mypassword";
$link = mysql_connect($hostname, $username, $password);
if (!$link) {
die('Connection failed: ' . mysql_error());
}
$db_selected = mysql_select_db($database, $link);
if (!$db_selected) {
die ('Can\'t select database: ' . mysql_error());
}
mysql_close($link);
?>
以下内容表示存根。我不会为您编写端到端查询。请注意,表单在
$\u POST
中没有为PHP处理程序提供任何内容,因为在这5行左右的下拉列表中缺少name='xxx'。他们所有的都是身份证
此外,您需要使用mysql_*函数以外的其他函数。这些旧的不推荐使用的函数很容易受到来自互联网上散乱的许多源代码的sql注入攻击。它们不会将查询与参数分开。它们中没有准备好的语句绑定,也没有异常处理(我见过使用过,有人纠正我)。以上是一些原因,我就到此为止
所以我把它移到了mysqli。如果你愿意,你也可以挥杆打PDO。您需要对准备好的语句进行绑定,以清理用户输入,以便在未清理的情况下不直接对其进行操作。绑定为您完成了这一任务
但以下内容将使您的帖子返回到输出中。相应地进行
形式
尝试/捕捉错误
以下是可能出现的一个错误的输出:
致命错误:未捕获异常“mysqli\u sql\u exception”,消息为“A”
连接尝试失败,因为连接方未正确连接
一段时间后响应,或建立的连接失败
因为连接的主机未能响应。'在里面
C:\Apache24\htdocs\searchpubs.php:9堆栈跟踪:#0
C:\Apache24\htdocs\searchpubs.php(9):mysqli->mysqli('ibm.com'),
“LordBenson”、“billybob”、“db666”)#1{main}插入
C:\Apache24\htdocs\searchpubs.php,第9行
因此,打开错误报告,尝试/捕获。它有你的背。随它去吧。mysql_*函数已被弃用。使用mysqli或PDO以及准备好的语句。记住,不客气,当你在书堆上有变化时,读几本。这是一个在堆栈上搜索“mysql sql注入”的过程,voteI以desc顺序订购,我自己也会选择PDO,但最主要的是从网络上获得不同于mysql的东西,因为你才刚刚开始。并检查参数的绑定。祝你好运
start
I am connected and feel happy.
category anywhere
foodDrink drinks
extra poolTable
distance 10
hours late