我已经在PHP中为我的MySQL数据库创建了一个搜索功能。搜索工作但我想以特殊方式显示结果。我正在使用卡片来显示表格,其中一些信息来自表格(LessonPlans)我搜索,另一个信息来自另一个表格(图像)。原始代码是这样的:
<?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 :(得分:0)
试试这个
从table1,table2中选择table1.firstname,table2.lastname table1.id = table2.id
答案 1 :(得分: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-&gt; fetch_object()的输出,因此您必须使用object来获取此值 $ r-&gt;主题