搜索列中的单个单词

时间:2016-02-06 01:33:33

标签: php sql database

This is the column

我想从列类别中的4个单词中取出一个单词。例如,我搜索自助餐和有自助餐的餐厅将显示。到目前为止,这是我的代码,不幸的是它没有用。

的HomeController

public function searchresto(){

     $searchinfo = $_POST['searchinfo'];

     $this->load->model('RestoModel');
     $restaurantinfo['restaurantinfo']=$this->RestoModel>searchRestaurant($searchinfo);

     $this->load->view('pages/searchDisplay',$restaurantinfo);
}

RestoModel

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;
}

1 个答案:

答案 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);