【发布时间】:2014-07-15 15:50:55
【问题描述】:
我正在尝试做一个涉及两个表“新闻和页面”的搜索系统。
我的新闻表:
我的页面表
当用户写一个词并提交表单时,我会选择搜索那个词,我的表格新闻和页面的标题和内容都像那个词。
所以我想选择我的两个表来访问这两个表的字段,因为我想在列表中显示查询结果。
我正在使用这个 sql 语句:
SELECT id_news, thumb, title, content, date, statuss, category FROM news
WHERE statuss = '%e%' AND title LIKE '%e%' OR content LIKE '%e%'
UNION
SELECT id_pag, title_pag, content_pag, link, NULL, NULL, NULL FROM pages
WHERE title_pag LIKE '%e%' OR content_pag LIKE '%e%' LIMIT 0,10
我得到了这个:
所以问题是:我想在列表中显示结果,我不想只访问我的新闻领域,我还想访问我的表格页面列。 p>
但是当我这样做时,我只是可以访问我的新闻表列:
if($result['id_pag'] != ''){
echo '<a href="'.BASE.$result['link'].'">'.$result['title_pag'].'</a>';
}
我收到此通知:注意:未定义索引:id_pag
这是我的代码:
echo '<ul class="searchlist">';
$read = $pdo->prepare("SELECT id_news, thumb, title, content, date, statuss, category FROM news
WHERE statuss = ? AND title LIKE ? OR content LIKE ?
UNION
SELECT id_pag, title_pag, content_pag, link, NULL, NULL, NULL FROM pages
WHERE title_pag LIKE ? OR content_pag LIKE ? LIMIT 0,10 ");
$read->bindValue(1, '1');
$read->bindValue(2, "%search%", PDO::PARAM_STR);
$read->bindValue(3, "%$search%", PDO::PARAM_STR);
$read->bindValue(4, "%$search%", PDO::PARAM_STR);
$read->bindValue(5, "%$search%", PDO::PARAM_STR);
$read->execute();
while ($result = $read->fetch(PDO::FETCH_ASSOC)){
echo '<li>';
if($result['id_news'] != ''){
echo '<a href="#">';
echo '<img src="'.BASE.'/uploads/news/'.$result['thumb'].'"/>';
echo '</a>';
}
if($result['id_pag'] != ''){
echo '<a href="'.BASE.$result['link'].'">'.$result['title_pag'].'</a>';
}
echo '</li>';
}
echo ' </ul>';
你能帮帮我吗?
【问题讨论】:
-
您必须使用
UNION的第一个选择的列名。要区分您的行是联合的哪一部分,请在第一列添加一列,即SELECT, ..., 'news' as source ...,第二列添加SELECT ..., 'pages' ...。