我在codeigniter的模型中有这段代码:
<?php
Class Mymodel Extends CI_Model
{
function __construct()
{
parent::__construct();
}
function search($textinput)
{
$street = "select street from dataSearch;";
$stripNameWOSpace = "select stripNameWOSpace FROM dataSearch;";
$vowels = array('a','e','i','o','u',';','/','-', ' ');
$string = strtolower($textinput);
$strippedVowels = mysql_real_escape_string(str_replace($vowels, '', $string));
$this->db->query("select dataSearch.id,
dataSearch.name,
dataSearch.street,
dataSearch.city,
dataSearch.lat,
dataSearch.lng,
category.asiatype from dataSearch join category on dataSearch.cat = category.id
where dataSearch.street like '%".$textinput."%'");
$this->db->query("select dataSearch.id,
dataSearch.name,
dataSearch.street,
dataSearch.city,
dataSearch.lat,
dataSearch.lng,
category.asiatype from dataSearch join category on dataSearch.cat = category.id
where dataSearch.stripNameWOSpace like '%".$strippedVowels."%'");
$query = $this->db->get();
$query->result();
}
}
?>
我只想执行多个查询。你注意到两者在哪里有不同的条件。我只是想得到两个查询的结果。 我尝试使用switch语句执行两个查询,但它无法正常工作。帮助我。
答案 0 :(得分:5)
您可以将查询设置为变量,以便对每个查询执行操作。
像这样:
Class Mymodel Extends CI_Model
{
function __construct()
{
parent::__construct();
}
function search($textinput) {
$query1 = $this->db->query("YOUR QUERY");
$query2 = $this->db->query("YOUR SECOND QUERY");
$result1 = $query1->result();
$result2 = $query2->result();
return array_merge($result1, $result2); // If you want to merge both results
}
}
在您的控制器中:
$this->load->model('Mymodel');
$searchresult = $this->Mymodel->search($textinput);
有关详细信息,请阅读CodeIgniter User Guide - Model
答案 1 :(得分:1)
我知道......老了,当我看到可以做得更好的事情时,正在寻找别的东西。除了where语句之外,两个select语句是相同的。您可以使用“OR”来组合两个WHERE语句。使用“DISTINCT”来避免重复输入。如果你真的想要重复的条目,应该使用“UNION”。