2016-05-12 114 views
0

我已经在PHP中为MySQL数据库创建了搜索功能。搜索工作,但我想以特殊的方式显示结果。我使用卡片来显示表格,其中一些信息来自我搜索的表格(LessonPlans),另一个信息来自另一个表格(图片)。原始代码是这样的:搜索MySQL并显示来自其他表的结果

<?php 
require_once("db_link.inc.php"); 

if(isset($_GET['search'])) { 
    $search = $link->escape_string($_GET['search']); 
    $query = $link->query("SELECT Subject, Level, Aim 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 class="col s6 m4 l3"> 
      <div class="card"> 
       <div class="card-image waves-effect waves-block waves-light"> 
        <img class="activator" src="../mlslp/assets/img/'. $r->Name-img .'" alt="'. $r->Alt-img .'"> 
       </div> 
       <div class="card-content"> 
        <span class="card-title activator grey-text text-darken-4 truncate tooltipped" data-position="bottom" data-delay="800" data-tooltip="'.$r->Subject.'">'.$r->Subject.'</span> 
        <p class="blue-text">'.$r->Level.'</p> 
       </div> 
       <div class="card-action"> 
        <a href="lessonplan.php?Id='. $r->Id .'">Open Lesson Plan</a> 
       </div> 
       <div class="card-reveal"> 
        <span class="card-title grey-text text-darken-4">'.$r->Subject.'<i class="material-icons right">close</i></span> 
        <p>'.$r->Aim.'</p> 
       </div> 
      </div> 
     </div>'; 
     } 
    } 
} 
?> 

我想使用的表是:

LessonPlans 
Id | ImageId | Subject | Level | Aim | Language 

Image 
ImageId | Name-img | Alt-img 

由于这是它显示了从LessonPlans正确的结果,但不是信息这是不可搜索的。我知道它不会像这样工作,我已经尝试了UNION,JOIN以及只有两个SELECT查询。当我加入Images表到查询我收到此错误信息:

Notice: Trying to get property of non-object in ... 

据我了解,这是因为$query不是一个对象当我添加另一个表。我不明白的是我如何解决这个问题。必须有一种方法来搜索一个表格,但显示两个表格的结果。有谁知道如何做到这一点?

我需要什么查询以及如何显示它?

+0

where从你得到这个$ row [“Name-img”]? – JYoThI

+0

这是我想要从“图像”打印的内容。在我的“正常”显示中,我使用'$ sql_result = $ link-> query(“SELECT * FROM LessonPlans l,Images i WHERE l.ImageId = i.ImageId AND l.Language ='English'ORDER BY l.Id DESC; “)和'while($ row = mysqli_fetch_array($ sql_result))',然后用行显示[”***“]。所以我把它留在那里以突出显示它来自另一张桌子。 –

+0

我更新了正确的$ r - > ***无处不在 –

回答

0

尝试这样

选择table1.firstname,table2.lastname从表1,表2 其中table1.id = table2.id

+0

这不会解决从两个表中显示的问题 –

0

试试这个

SELECT * FROM LessonPlans AS L 
JOIN Image AS I 
ON L.ImageId=I.ImageId 
WHERE L.Subject 
LIKE '%".$search."%' 
OR L.Level LIKE '%".$search."%' 
OR L.Aim LIKE '%".$search."%' 
AND L.Language='English' 

和输出中你得到的由$ r = $ query-> fetch_object()输出,所以你必须使用object来获得像这样的值$ r-> Subject

+0

这不会帮助我显示“图像” –