我想从列类别中的4个单词中取出一个单词。例如,我搜索自助餐和有自助餐的餐厅将显示。到目前为止,这是我的代码,不幸的是它没有用。
public function searchresto(){
$searchinfo = $_POST['searchinfo'];
$this->load->model('RestoModel');
$restaurantinfo['restaurantinfo']=$this->RestoModel>searchRestaurant($searchinfo);
$this->load->view('pages/searchDisplay',$restaurantinfo);
}
public function searchRestaurant($searchinfo){
$sql = "SELECT * FROM restaurants WHERE restoname = '$searchinfo' OR restocuisines = '$searchinfo' OR category = '$searchinfo'";
$result = $this->db->query($sql);
$result = $result->result('array');
return $result;
}
答案 0 :(得分:1)
首先,清理用户输入。切勿直接从用户输入查询数据库,因为这可能会导致SQL Injection.
对用户输入进行sanatizing后,请尝试使用LIKE
功能。
例如:
SELECT 'Breakfast, Lunch, Dinner, Buffet, Snack' LIKE '%Lunch%'
会输出1。
SELECT 'Breakfast, Lunch, Dinner, Buffet, Snack' LIKE '%NonExistantCategory%'
将输出0。
尝试将您的查询更改为SELECT * FROM restaurants WHERE category LIKE '%$searchinfoSanatized%'
,其中$searchinfoSanatized
是已过滤/转义的输入。
此外,我相信您在RestoModel之后忘记-
:$restaurantinfo['restaurantinfo']=$this->RestoModel>searchRestaurant($searchinfo);