使用LIKE WildCard的SQL代码无法正常工作

时间:2014-12-09 10:52:19

标签: php mysql sql-like

这是我的代码。这个SQL查询在phpmyadmin中正常工作,它按我的意愿返回2个酒店,但在php代码中,它返回我所有的酒店。为什么这不起作用?

    $search_text = "%".  $search_text ."%";

    $query = "SELECT name,country,province,town FROM Hotel WHERE country LIKE ? OR province LIKE ? OR town LIKE ? OR name LIKE ? ORDER BY name DESC";

    $stmt = Database::$connection->prepare($query);

    $stmt -> bind_param('ssss',$search_text , $search_text, $search_text, $search_text);
    $stmt -> execute();
    $result = $stmt -> get_result();

    $searched = null;

    $count = 0;
    while($row = $result -> fetch_array(MYSQLI_NUM)){
        $searched[$count][0] = $row[0];
        $searched[$count][1] = $row[1];
        $searched[$count][2] = $row[2];
        $searched[$count][3] = $row[3];
        $count++;
    }
    $stmt-> close();
    return $searched;

2 个答案:

答案 0 :(得分:0)

我看到的唯一问题是你的字符串中有空格。尝试删除它。

$search_text = "%".$search_text."%";

也可能是因为你需要包含撇号。

$search_text = '"%'.$search_text.'%"';

答案 1 :(得分:0)

检查你的代码,他们设置了$ search_text的值,它可能是空白的,所以它返回所有行。