PHP从两个表中搜索

时间:2016-05-12 14:00:03

标签: php mysql

我在PHP / MySQL中的搜索功能只要我只从一个表中搜索就可以正常工作。问题是我需要搜索一个表并从中显示信息,但是还要显示另一个表中的两个部分。使用此代码我收到Notice: Trying to get property of non-obect错误。我的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语句是错误的。

2 个答案:

答案 0 :(得分:1)

如果两个表都具有相同的名称ImageId,则尝试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 - &gt;表图像表的图像ID

     

l.ImageId - &gt; LessonPlans表的图像ID

答案 1 :(得分:0)

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

在SQL中,i.Name-img应被视为i.Name减去img

在PHP中也是如此。

你不能叫$ r-&gt; Name-Img,因为它被视为$ r-&gt;名称减去常数Img(或字符串)。