为什么我的搜索不起作用?

时间:2017-05-31 12:37:11

标签: php mysqli

我正在尝试获取php代码来搜索数据库并返回所有匹配的“park_name”,但它表示搜索变量未定义,并且只返回数据库中的一个park。 这是我搜索的代码:

<form method="post" action="Search_page.php" name="search" id="Search">
<label for="search">Search:</label><input type="text" name="Search" id="search" />
<input type="submit" name="submit" value="Search"/>
</form>
<?php 
if(isset($_POST['search'])){
$search = $_POST['search'];
$search = preg_replace("#[^0-9a-z]i#","", $search); }
$sql="SELECT Park_name, street FROM park_list WHERE park_name LIKE '%$search%'"; 
//query db
$result = $db->query($sql);
?>
</div>
<?php while ($row = $result->fetch_assoc()) { ?>
<div class="results">
<h2><?php echo $row['Park_name']?></h2> </br>
<p><?php echo $row['street']?></p>
</div>
<?php } ?>

3 个答案:

答案 0 :(得分:4)

因为,Search!= search

错误报告也告诉了你。

  • 顺便说一句,!=是“不等于”的逻辑运算符; - )

这些是区分大小写的。

顺便说一下;如果你想保存/保存你的数据库,请帮自己一个忙,并使用准备好的声明。

如果使用mysqli_error($db)失败,请检查查询错误。

您还在此处使用名称属性以及相同名称的POST数组:

<form method="post" action="Search_page.php" name="search" id="Search">
                                             ^^^^^^^^^^^^^
                                             Remove that ^

并将name="Search"的输入重命名为name="search"

你认为它会发挥作用,但它不会。您的搜索依赖于输入的name属性(以及输入本身)。表单通常不使用名称属性。

  • 您需要将其删除。

旁注:通常最好使用!empty()&lt; (而非为空)表示用户输入,而不是isset()。后者主要用于无线电/复选框/提交输入。

答案 1 :(得分:1)

表单字段名称区分大小写。

将第二行更改为

<label for="search">Search:</label><input type="text" name="search" id="search" />

答案 2 :(得分:0)

我还没有回复评论,但Park_name应该是小写的。 你在sql语句中有不一致的情况:

$sql="SELECT Park_name, street FROM park_list WHERE park_name LIKE '%$search%'";