2013-07-11 55 views
2

你好,stackoverflow社区。 我想根据文章标题进行自动搜索,以显示关于它的最新消息。这些消息可以在一个或几个表格中,我们不知道使用。这是我的代码:Codeigniter喜欢在几个表中搜索

$search = 'any article title'; 
$Linkearray = array('title' => $search); 
$Linkearray2 = array('text' => $search); 
$this->db->or_like($Linkearray); 
$this->db->or_like($Linkearray2); 
$this->db->from('table1', 'table2'); 
$query = $this->db->get(); 

然后我尝试下面的代码显示页面上的结果:

foreach ($query->result_array() as $row): 
echo $row['title']; 
endforeach; 

的问题是,它仅显示从表1的搜索结果。 如果我重写一行代码为:

$this->db->from('table1, table2'); 

我得到一个错误1052如果任何人有一个想法如何解决它,请分享:) 提前感谢!

+0

http://stackoverflow.com/questions/2774538/codeigniter-select-from-multiple-tables,只是用逗号分隔表('table1,table2')? – sinisake

+0

thx您的帖子。但是当我尝试用逗号分隔时,我得到了1052错误...我会仔细检查你的链接。 –

+0

你可以发布你的数据库方案,并输出/回声查询?当你确定'纯'的SQL查询返回所需的结果,那么你可以尝试将其转换为活动记录格式...我认为这样的问题之一可能是这样的:http://stackoverflow.com/questions/8509798/ codeigniter-column-id-in-order-clause-is-ambiguous(两个表中的列名相同)... – sinisake

回答

3

而且,这里是解决方案:

$search = 'some word'; 
$Linkearray = array('table1.title' => $search,'table2.text' => $search); 
$Linkearray2 = array('table2.title' => $search,'table2.text' => $search); 
$this->db->or_like($Linkearray); 
$this->db->or_like($Linkearray2); 
$this->db->from('table1,table2'); 
$query = $this->db->get(); 

foreach ($query->result_array() as $row): 
echo $row['title']; 
endforeach; 

这样 - 您将避免1052错误,并且脚本将从两个表中返回数据。在这种情况下生成的查询是:SELECT * FROM(table1table2)其中table1title LIKE'%strokes%'OR table2text LIKE'%strokes%'OR table2title LIKE'%strokes%'OR table2text LIKE'%strokes%'但是,它会返回一些重复的结果...更好的查询,或结果的PHP操作...以获得所需的输出。

-1

你可以使用php函数来组合输出吗? 像...

array_merge($这个 - > DB-从( '表1'),$这个 - > DB->从(表2)>)