我想根据文章标题进行自动搜索,以显示有关该文章的最新新闻。这些消息可以在一个或几个表中,我们不知道如何使用。这是我的代码:
$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;
问题是,它仅显示来自 table1 的搜索结果。 如果我将一行代码重写为:
$this->db->from('table1, table2');
我收到错误 1052,因为我的 LIKE 条件中的字段名称之一在两个表中都存在。
而且,这是解决方案:
$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 (`table1`, `table2`)
WHERE `table1`.`title` LIKE '%strokes%'
OR `table2`.`text` LIKE '%strokes%'
OR `table2`.`title` LIKE '%strokes%'
OR `table2`.`text` LIKE '%strokes%'
但是,它会返回一些重复的结果...更好的查询,或结果的 php 操作...以获得所需的输出。
你可以使用php函数来组合输出吗? 类似...
array_merge($this->db->from('table1'), $this->db->from(table2))