我有一个名为news
的表,并且有两个代码片段,我想创建一个扫描keywords
表的搜索引擎。连接一个表并运行得非常好,在查询中添加一个额外的表会更清晰。
我的任务是创建一个从表中返回行的搜索引擎。搜索引擎基于关键字,非常适合特定的主题,例如“纽约时报”,但如果我想输入新闻,那么所有新闻网站都按ID排序。但有时完全不同的具有关键字'news'的术语会在CNN中突然出现,这与CNN不同,因为id。使用新表,组织表格会容易得多。这样,如果输入的术语是“新闻”,则网站将按ID排序,即使它们在其他表格上发生冲突,它们仍按ID排序。
虽然我的查询与传统查询略有不同,但我不知道如何
通过UNION
或
带有某种LEFT JOIN
标记。
我的查询如下,我希望有人解释:a)什么是错的 b)告诉我或粘贴下面的代码:
<?php
if( isset($_GET['k']) ){
$k = $_GET['k'];
}else{
$k = '';
}
$k = ( isset($_GET['k']) )? trim($_GET['k']) : '';
$terms = (strlen($k) > 0)? explode(' ', $k) : Array();
/* The code below is from a different part of the script */
$query = " SELECT * FROM scan WHERE ";
$terms = array_map('mysql_real_escape_string', $terms);
$i = 0;
foreach ($terms as $each) {
if ($i++ !== 0){
$query .= " AND ";
}
$query .= "keywords LIKE '%{$each}%'";
}
答案 0 :(得分:2)
我不确切地知道你想做什么,但这可能会有所帮助:
$query = " SELECT * FROM scan, news WHERE scan.news_id = news.id AND ";
$terms = array_map('mysql_real_escape_string', $terms);
foreach ($terms as $each) {
$query .= "AND scan.keywords LIKE '%{$each}%'";
}
通过在查询中添加条件并从两个表中进行选择,在两个表之间建立联合。条件是确保两个表中的公共列是等于。
答案 1 :(得分:0)
对于左连接,请阅读此http://www.w3schools.com/sql/sql_join_left.asp
我真的不知道你在问什么。如果你能澄清你的问题,我会为你提供一个例子。感谢。