根据信件从数据库执行搜索

时间:2015-09-18 07:51:00

标签: php mysql sql search

我有一个搜索表单,可以帮助用户从数据库中搜索任何内容。

表的视图是(表名=菜单)

id  dish
1   ABC
2   CDE
3   EFG
4   CDF

目前,当用户输入单词(例如ABC)然后使用表单执行搜索时,我得到了所需的结果,但我希望稍微更改此功能,

我希望如果用户输入第一个字母,例如:C,那么表格中包含字母C的所有单词都应该显示,

然后,如果他输入例如:CD,则应该显示所有具有CD的单词。任何人都可以告诉我该怎么做

包含搜索表单的index.php页面代码:

<script>
$(document).ready(function()
    {
        $('#form').on('submit', function(e)
            {
                e.preventDefault();
                $.ajax({
                    url: 't_searchmenu.php',
                    type: 'POST',
                    dataType: 'html',
                    data: {text:$('#textbox').val()},
                    success: function(response) {
                    $('#prod_search').html(response);
                    }
                });
            });
    });
</script>

<form class="pull-right" style="width:100%;" id="form" >
    <input type="text" id="textbox" name="textbox" class="search-query" placeholder="Search" style="width:80%;" />
    <button type="submit" value="submit" id="generate2"  class="btn btn-primary">Find</button>
</form> 

t_searchmenu.php页面上的代码

 $t = $_POST['text']; 
 $sql = " SELECT * from menu where dish='" . $t . "'";
 $result = mysqli_query($con, $sql);
 if (mysqli_num_rows($result) > 0) {
     while ($row = mysqli_fetch_assoc($result)) {
         //print the result
     }
 }

3 个答案:

答案 0 :(得分:1)

你可以这样查询:

$sql=" SELECT * from menu where dish like '%".$t."%'";

答案 1 :(得分:1)

您可以使用% wildcard。它匹配0个或更多字符。例如,C%将匹配CDECEF,依此类推。 CD%将与CDECDF等匹配:

$sql="SELECT * FROM menu WHERE dish LIKE '$t%'";

答案 2 :(得分:1)

试试这个

SELECT * from tableName 
WHERE columnName LIKE '%".$t."%'";