我的MySql查询做错了什么?

时间:2016-05-11 05:19:32

标签: php mysql

我正在尝试在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

谁能看到我做错了什么?

/哈坎

1 个答案:

答案 0 :(得分:1)

  • 您没有在循环中打印$r->Subject
  • 您没有正确concatenate $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查看单个刻度(')和双刻度(")的差异。