2016-05-12 79 views
0

我有一个PHP/MySQL的搜索功能,只要我只从一个表中搜索就可以正常工作。问题是我需要搜索一个表并显示信息,但也显示另一个表中的两个部分。使用此代码,我得到一个Notice: Trying to get property of non-obect错误。我的PHP代码是这样的:来自两个表的PHP搜索

if(isset($_GET['search'])) { 
    $search = $link->escape_string($_GET['search']); 
    $query = $link->query("SELECT l.Id, l.ImageId, l.Subject, l.Level, l.Aim, i.NameImg, i.AltImg FROM LessonPlans l, Images i 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->NameImg.'" alt="'. $r->AltImg.'"> 
       </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>'; 

     } 
    } 
} 

有没有办法解决两个表不发送对象的问题?我不确定这是查询还是if/while语句错误。

+0

你在每张表中都有共同的字段吗?像主键和外键? – Arun

+0

是的,他们通过'ImageId'加入 –

+0

你在哪里初始化$ link变量?你确定是一个MySQL资源吗? – Richard

回答

1

如果两个表具有相同的名称图像标识,然后再尝试beloq查询

$query = $link->query("SELECT l.Id, l.ImageId, l.Subject, l.Level, l.Aim, i.NameImg, i.AltImg FROM LessonPlans l join Images i on i.ImageId=l.ImageId WHERE Subject LIKE '%".$search."%' OR Level LIKE '%".$search."%' OR Aim LIKE '%".$search."%' AND Language='English'"); 

i.ImageId - 的>图片ID - >图像表图像表

l.ImageId的ID LessonPlans表

+0

仍然得到'注意:尝试获取非对象的属性'与此变化 –

+0

请运行sql代码在phpmyadmin并检查是否有任何结果 – Arun

+0

我不认为问题是在查询中,但在方式它处理对象。不幸的是,我的PHP级别目前还不够好,无法理解为什么! –

0

您不能在数据库名称中使用连字符。

在SQL i.Name-IMG应该被视为i.Name减去IMG

和PHP它是相同的。

您不能调用$ r-> Name-Img,因为它被视为像$ r-> Name减去常量Img(或字符串)。

+0

好的。感谢您指出了这一点。我编辑过。虽然没有帮助,但在这个问题... –

+0

你可以把更多的代码到你的问题? – Richard

+0

你需要什么代码比这更多? HTML? –