我正在尝试获取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 } ?>
答案 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%'";