PHP-如何搜索下拉菜单中指定的单个列
我有一个SQL数据库,它实现在一个HTML网页上。我希望用户能够在搜索框中键入一个值,并在下拉菜单中搜索表中指定的一列 例如:表中有3列-‘名字’、‘第二个名字’和‘姓氏’。用户可以在下拉菜单中选择其中一个列名,然后在搜索框中键入要在指定列中搜索的内容。假设他们选择“姓氏”列,并希望在该列中搜索“约翰逊” 结果应显示所有姓氏中带有“约翰逊”字样,并显示每一个姓氏所在行的其余部分。我的数据库有点不同,比这个大,但它应用相同的。我的当前代码可以在下面找到:PHP-如何搜索下拉菜单中指定的单个列,php,html,mysql,css,sql,Php,Html,Mysql,Css,Sql,我有一个SQL数据库,它实现在一个HTML网页上。我希望用户能够在搜索框中键入一个值,并在下拉菜单中搜索表中指定的一列 例如:表中有3列-‘名字’、‘第二个名字’和‘姓氏’。用户可以在下拉菜单中选择其中一个列名,然后在搜索框中键入要在指定列中搜索的内容。假设他们选择“姓氏”列,并希望在该列中搜索“约翰逊” 结果应显示所有姓氏中带有“约翰逊”字样,并显示每一个姓氏所在行的其余部分。我的数据库有点不同,比这个大,但它应用相同的。我的当前代码可以在下面找到: <head> <
<head>
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
<meta charset="utf-8" />
<title>The 24 Hour Race</title>
<div id="title">
<a href="index.php"><img src="images/title.png"></img></a>
</div>
<p id="subtitle">For the toughest of the tough</p>
</head>
<body>
<div id="nav">
<form method="post" action="index.php?go" id="searchform">
<br>
<h3>Search in:</h3><select name="field">
<option value="rider_no.">Rider No.</option>
<option value="category">Category</option>
<option value="name">Name</option>
<option value="team_name">Team Name</option>
<option value="nationality">Nationality</option>
<option value="year_participated">Year Participated</option>
<option value="total_laps">Total Laps</option>
<option value="fastest_lap">Fastest Lap</option>
</select>
<input type="text" name="key">
<input type="submit" name="submit" value="Search"><br>
</form>
<br>
<h3>Sort by years:</h3>
<ul>
<li><a href="2007.php">2007</a></li>
<li><a href="2008.php">2008</a></li>
<li><a href="2009.php">2009</a></li>
<li><a href="2010.php">2010</a></li>
<li><a href="2011.php">2011</a></li>
<li><a href="2012.php">2012</a></li>
<li><a href="2013.php">2013</a></li>
<li><a href="2014.php">2014</a></li>
<li><a href="2015.php">2015</a></li>
</ul>
</div>
<div id="form">
<table id="t01" align="right" cellspacing="2">
<thead>
<tr>
<td bgcolor="#ccc">Rider No.</td>
<td bgcolor="#ccc">Category</td>
<td bgcolor="#ccc">Name</td>
<td bgcolor="#ccc">Team Name</td>
<td bgcolor="#ccc">Nationality</td>
<td bgcolor="#ccc">Year Participated</td>
<td bgcolor="#ccc">Total Laps</td>
<td bgcolor="#ccc">Fastest Lap</td>
</tr>
</thead>
<tbody>
<?php
$connect = mysql_connect("localhost","root", "Highland5");
if (!$connect) {
die(mysql_error());
}
mysql_select_db("the24hourrace");
if(isset($_POST[field]) and isset($_POST[key])) {
$results = mysql_query("SELECT ".[field]." FROM riders WHERE ".[field]." = ".[key], $connect);
} else {
$results = mysql_query("SELECT * FROM riders", $connect);
}
while($row = mysql_fetch_array($results)) {
?>
<tr>
<td><?php echo $row['rider_no']?></td>
<td><?php echo $row['category']?></td>
<td><?php echo $row['name']?></td>
<td><?php echo $row['team_name']?></td>
<td><?php echo $row['nationality']?></td>
<td><?php echo $row['year_participated']?></td>
<td><?php echo $row['total_laps']?></td>
<td><?php echo $row['fastest_lap']?></td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
</body>
24小时赛跑
最难对付的人
搜索:
车手号。
类别
名称
队名
国籍
参与年份
总圈数
最快圈数
按年份排序:
车手号。
类别
名称
队名
国籍
参与年份
总圈数
最快圈数
我要问的重要部分包括div id=“nav”及其下表:
<form method="post" action="index.php?go" id="searchform">
<br>
<h3>Search in:</h3><select name="field">
<option value="rider_no.">Rider No.</option>
<option value="category">Category</option>
<option value="name">Name</option>
<option value="team_name">Team Name</option>
<option value="nationality">Nationality</option>
<option value="year_participated">Year Participated</option>
<option value="total_laps">Total Laps</option>
<option value="fastest_lap">Fastest Lap</option>
</select>
<input type="text" name="key">
<input type="submit" name="submit" value="Search"><br>
</form>
搜索:
车手号。
类别
名称
队名
国籍
参与年份
总圈数
最快圈数
以及PHP部分:
<?php
$connect = mysql_connect("localhost","root", "Highland5");
if (!$connect) {
die(mysql_error());
}
mysql_select_db("the24hourrace");
if(isset($_POST[field]) and isset($_POST[key])) {
$results = mysql_query("SELECT ".[field]." FROM riders WHERE ".[field]." = ".[key], $connect);
} else {
$results = mysql_query("SELECT * FROM riders", $connect);
}
while($row = mysql_fetch_array($results)) {
?>
<tr>
<td><?php echo $row['rider_no']?></td>
<td><?php echo $row['category']?></td>
<td><?php echo $row['name']?></td>
<td><?php echo $row['team_name']?></td>
<td><?php echo $row['nationality']?></td>
<td><?php echo $row['year_participated']?></td>
<td><?php echo $row['total_laps']?></td>
<td><?php echo $row['fastest_lap']?></td>
</tr>
<?php
}
?>
如果您对我的代码或我的问题有任何疑问,请不要犹豫!我发现这有点难以解释:)
为了将来的参考,请在发布问题之前进行研究,并提供您的错误代码
PHP是一种面向对象的编程语言,这是循环浏览每一列的最佳方法
<?php foreach($connect->query($sql) as $r): ?>
<td> <?php echo $r['column']; ?> </td>
<?php endforeach; ?>
发布请求-
echo $_POST['param'];
echo $_POST[$variable];
这意味着,如果没有将参数存储在变量中,则必须将其声明为字符串
另请注意,您很容易受到攻击,因为您没有安全地绑定字段。
但如果你不担心这一点,那么你可以这样做:
$field = $_POST['field'];
$key = $_POST['key'];
$sql = "SELECT * FROM riders WHERE '$field'='$key'";
所以我继续进行,几乎把它全部清理干净,并用更安全的方法重写了它。我测试了它和它的工作。此外,这不是最安全的方式,但它比您最初发布的代码更安全。你可以在谷歌上搜索,找到更多的方法来保护你的数据 新代码:
define('DB_HOSTNAME','localhost');
定义(‘数据库’、‘24小时’);
定义('DB_USERNAME','root');
定义('DB_密码','');
错误报告(E_全部);
ini设置(“显示错误”,1);
函数dataQuery($query,$params){
$queryType=explode(“”,$query);
//建立数据库连接
试一试{
$dbh=new PDO('mysql:host='.DB_HOSTNAME.';dbname='.DB_数据库,DB_用户名,DB_密码);
$dbh->setAttribute(PDO::ATTR\u EMULATE\u PREPARES,false);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
}
捕获(PDO$e){
echo$e->getMessage();
$errorCode=$e->getCode();
}
//运行查询
试一试{
$queryResults=$dbh->prepare($query);
$queryResults->execute($params);
如果($queryResults!=null&&'SELECT'==$queryType[0]){
$results=$queryResults->fetchAll(PDO::FETCH_ASSOC);
返回$results;
}
$queryResults=null;//正确关闭的两个步骤中的第一个
$dbh=null;//关闭连接的第二步
}
捕获(PDO$e){
$errorMsg=$e->getMessage();
echo$errorMsg;
}
}
?>
24小时赛跑
最难对付的人
搜索:
车手编号。
类别
名称
队名
国籍
参与年份
总圈数
最快圈数
按年份排序:
车手号。
类别
名称
队名
国籍
参与年份
总圈数
最快圈数
所以你要做的就是,一旦他们输入字段的详细信息int o1并点击一个按钮,你希望它显示结果,或者你想让它在他们键入时显示?@rackmup420我想让它刷新页面,并在他们点击“提交”后显示新结果当前代码有哪些错误?$results=mysql\u
$field = $_POST['field'];
$key = $_POST['key'];
$sql = "SELECT * FROM riders WHERE '$field'='$key'";
define('DB_HOSTNAME', 'localhost');
define('DB_DATABASE', 'the24hourrace');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
error_reporting(E_ALL);
ini_set('display_errors', 1);
function dataQuery($query, $params) {
$queryType = explode(' ', $query);
// establish database connection
try {
$dbh = new PDO('mysql:host='.DB_HOSTNAME.';dbname='.DB_DATABASE, DB_USERNAME, DB_PASSWORD);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo $e->getMessage();
$errorCode = $e->getCode();
}
// run query
try {
$queryResults = $dbh->prepare($query);
$queryResults->execute($params);
if($queryResults != null && 'SELECT' == $queryType[0]) {
$results = $queryResults->fetchAll(PDO::FETCH_ASSOC);
return $results;
}
$queryResults = null; // first of the two steps to properly close
$dbh = null; // second step to close the connection
}
catch(PDOException $e) {
$errorMsg = $e->getMessage();
echo $errorMsg;
}
}
?>
<head>
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
<meta charset="utf-8" />
<title>The 24 Hour Race</title>
<div id="title">
<a href="index.php"><img src="images/title.png"></img></a>
</div>
<p id="subtitle">For the toughest of the tough</p>
</head>
<body>
<div id="nav">
<form method="post" action="index.php" id="searchform">
<br>
<h3>Search in:</h3><select name="field">
<option value="rider_no">Rider No.</option>
<option value="category">Category</option>
<option value="name">Name</option>
<option value="team_name">Team Name</option>
<option value="nationality">Nationality</option>
<option value="year_participated">Year Participated</option>
<option value="total_laps">Total Laps</option>
<option value="fastest_lap">Fastest Lap</option>
</select>
<input type="text" name="key" required>
<input type="submit" name="submit" value="Search"><br>
</form>
<br>
<h3>Sort by years:</h3>
<ul>
<li><a href="2007.php">2007</a></li>
<li><a href="2008.php">2008</a></li>
<li><a href="2009.php">2009</a></li>
<li><a href="2010.php">2010</a></li>
<li><a href="2011.php">2011</a></li>
<li><a href="2012.php">2012</a></li>
<li><a href="2013.php">2013</a></li>
<li><a href="2014.php">2014</a></li>
<li><a href="2015.php">2015</a></li>
</ul>
</div>
<div id="form">
<table id="t01" align="right" cellspacing="2">
<thead>
<tr>
<td bgcolor="#ccc">Rider No.</td>
<td bgcolor="#ccc">Category</td>
<td bgcolor="#ccc">Name</td>
<td bgcolor="#ccc">Team Name</td>
<td bgcolor="#ccc">Nationality</td>
<td bgcolor="#ccc">Year Participated</td>
<td bgcolor="#ccc">Total Laps</td>
<td bgcolor="#ccc">Fastest Lap</td>
</tr>
</thead>
<tbody>
<?php
if (isset($_POST['submit'])) {
$field = $_POST['field'];
$key = $_POST['key'];
$query = 'SELECT * FROM `riders` WHERE `'.$field.'` = ?';
$params = array($key);
}else{
$query = 'SELECT * FROM `riders`';
$params = array();
}
$results = dataQuery($query,$params);
foreach($results as $row) {
?>
<tr>
<td><?php echo $row['rider_no']?></td>
<td><?php echo $row['category']?></td>
<td><?php echo $row['name']?></td>
<td><?php echo $row['team_name']?></td>
<td><?php echo $row['nationality']?></td>
<td><?php echo $row['year_participated']?></td>
<td><?php echo $row['total_laps']?></td>
<td><?php echo $row['fastest_lap']?></td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
</body>