我正在尝试在PHP中为我的MySQL数据库创建一个简单的搜索功能。我尝试了不同的tutuorial但最终得到了相同的结果。从使用print_r测试一下我认为问题是查询,但我不明白为什么它不起作用。有没有人有想法?我的代码如下:
HTML
<form action="search.php" method="get">
<div class="input-field">
<input id="search" name="search" type="search" placeholder="Search lesson plans" required>
<label for="search"><i class="material-icons">search</i></label>
<i class="material-icons" id="closesearch">close</i>
</div>
</form>
PHP
<?php
require_once("db_link.inc.php");
if(isset($_GET['search'])) {
$search = $link->escape_string($_GET['search']);
$query = $link->query('SELECT * FROM LessonPlans WHERE Subject LIKE "%{$search}%" OR Level LIKE "%{$search}%" OR Aim LIKE "%{$search}%" AND Language="English"');
if($query->num_rows){
while($r = $query->fetch_object()){
echo '<div>
<p>'; $r->Subject; echo '</p>
</div>';
}
}
}
?>
表格
LessonPlans
Id | Subject | Level | Aim | Text | Language
谁能看到我做错了什么?
/哈坎
答案 0 :(得分:1)
$r->Subject
。$search
变量查询您的查询应如下所示(如果您坚持使用单一勾选'
):
$query = $link->query('SELECT * FROM LessonPlans WHERE Subject LIKE "%'.$search.'%" OR Level LIKE "%'.$search.'%" OR Aim LIKE "%'.$search.'%" AND Language="English"');
但是如果你想继续使用curly brackets:
$query = $link->query("SELECT * FROM LessonPlans WHERE Subject LIKE '%{$search}%' OR Level LIKE '%{$search}%' OR Aim LIKE '%{$search}%' AND Language='English'");
用于显示/回显数据:
echo '<div>
<p>'.$r->Subject.'</p>
</div>';
您可以参考here查看单个刻度('
)和双刻度("
)的差异。