gpt4 book ai didi

php - 如何从不同的搜索字段输出信息?

转载 作者:行者123 更新时间:2023-11-29 05:03:16 25 4
gpt4 key购买 nike

我有以下表单,其中包含三个搜索字段。两个文本输入(关键字和距离)和一个下拉列表(交通)。

我的搜索功能适用于关键字文本输入,但不适用于其他两个字段。当我“回显”时,我可以看到正在输出数据,但它实际上不会搜索这些术语。

    <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 循环并改用单独的变量。

现在,您的 foreach 会在每个 LIKE 查询中显示类似 search1search2search3 的内容,这本身不会抛出错误,它只是不会 (可能)匹配任何东西。

这是一个示例,将 $search_x 替换为您选择的条件/POST:

$sql = "SELECT * FROM resource WHERE resource_name LIKE '%$search_1%'
OR description LIKE '%$search_2%' OR username LIKE '%$search_3%'
OR primary_function LIKE '%$search_4%'
OR distance_in_miles LIKE '%$search_5%'
ORDER BY distance_in_miles";

$result = mysqli_query($conn, $sql);
if(!$result){
// handle no results/failure here
}

您可能还需要通过在两端、开头和/或结尾使用一个 % 来尝试一下。

旁注:如评论中所述,始终对任何类型的循环函数使用适当的支撑。

顺便说一句,我建议您为此使用准备好的语句。 real_escape_string() 可以被绕过,这里有一个关于这个主题的问答:

关于php - 如何从不同的搜索字段输出信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53770470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com