【发布时间】:2019-05-15 04:16:45
【问题描述】:
我有以下带有三个搜索字段的表单。 两个文本输入(关键字和距离)和一个下拉列表(交通)。
我的搜索功能适用于关键字文本输入,但不适用于其他两个字段。我可以看到当我“回显”时正在输出数据,但它实际上不会搜索这些术语。
<form action="searchresults.php" method="POST">
<h3> Keyword </h3>
<input type="text" name="keyword-search">
<h3> Primary Function </h3>
<?php
$sql = "SELECT pf_id, primary_function FROM primary_function ORDER BY pf_id;";
$result = mysqli_query($conn, $sql);
echo "<select name='function-search' id = 'function-search'>";
echo '<option value=""></option>';
while ($row = mysqli_fetch_assoc($result)) {
unset($id, $name);
$id = $row['pf_id'];
$name = $row['primary_function'];
echo '<option value="'.$name.'">'.$name.'</option>';
}
echo "</select>";
?>
<h3> Distance </h3>
within <input type="text" name="distance-search"> miles of PCC
<br>
<button type="submit" name="submit-search">Search</button>
</form>
下面是数据被推送到的地方。
<?php
if (isset($_POST['submit-search'])) {
$functionSearch = mysqli_real_escape_string($conn, $_POST['function-search']);
$keySearch = mysqli_real_escape_string($conn, $_POST['keyword-search']);
$distanceSearch = mysqli_real_escape_string($conn, $_POST['distance-search']);
$sql = "SELECT * FROM resource WHERE resource_name LIKE '%$keySearch%'
OR description LIKE '%$keySearch%' OR username LIKE '%$keySearch%'
OR primary_function LIKE '%$keySearch%'
OR distance_in_miles LIKE '%$keySearch%'
ORDER BY distance_in_miles";
$result = mysqli_query($conn, $sql);
$queryResult = mysqli_num_rows($result);
// Checking for search result page errors
//echo $result;
echo $queryResult;
// echo $functionSearch;
if ($queryResult > 0){
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr><td>". $row['resource_id'] ."</td><td>". $row['resource_name'] ."</td><td>". $row['username'] ."</td><td>". "$" .$row['cost_in_usd'] ."/". $row['cost_per'] ."</td><td>". $row['distance_in_miles'] ."</td></tr>";
} echo "</table>";
} else {
echo "<br>No results matching your search";
}
}
?>
【问题讨论】:
-
你的 foreach 循环中没有波浪括号,所以它只是循环 sql 赋值。
-
这里似乎缺少代码。主要是为了看起来像是一种形式。
-
谢谢。查看是否有任何启用错误报告并在查询/查询上使用
mysqli_error($conn)的内容,同时查看 HTML 源代码,这将揭示其中与查询一起使用的表单中的内容。您还可以回显您的查询以查看(或不)那里传递了什么。 -
好的,这就是我认为的错误我会尝试删除您已将变量传递到的数组并分配不同的变量。
-
@howthegodschill 我在答案区域中发布了一些内容供您查看。评论太长了。我希望这会有所帮助。