PHP - 无法将URL查询字符串传递给模型以进行数据库查询

时间:2015-04-11 02:49:49

标签: php postgresql

使用PHP 5.6和PostgreSQL

我对PHP比较新。我使用查询字符串在页面上对结果进行排序,如下所示:

if (isset($_GET['sort'])) {

    $criteria = $_GET['sort'];
    $result = get_all_sorted_restaurants_with_limit($limit, $criteria); 

 } else {

    $result = get_all_restaurants_with_limit($limit); 

 }

其中'排序'是url查询字符串值。从做一个var_dump,我可以看到它正确地抓取一个字符串值。

接下来,如果设置了该值,它将在我的模型中调用以下方法:

function get_all_sorted_restaurants_with_limit($limit, $sort) {

    $conn = open_database_connection();

    $result = pg_query($conn, "SELECT * FROM restaurant r WHERE r.Type =
    $sort LIMIT $limit;");

    close_database_connection();

    return $result;

}

这里的事情变得很糟糕:当我尝试使用$ sort时,在get_all_sorted_restaurants_with_limit方法中,它什么都不返回。但是,如果我自己设置它(即运动吧',就像这样:

    $result = pg_query($conn, "SELECT * FROM restaurant r WHERE r.Type  = 'sports bar' LIMIT $limit;");

它有效。 var转储显示这是从查询URL中抓取的完全相同的字符串。

我该如何解决这个问题?我是否需要施放它,或者抓住一个strval()(我已经尝试过,没有工作......)。

2 个答案:

答案 0 :(得分:2)

您似乎错过了$sort周围的单引号:

$result = pg_query($conn, "SELECT * FROM restaurant r WHERE r.Type = '$sort' LIMIT $limit;");

答案 1 :(得分:2)

似乎您错过了$sort变量中的单引号,但为了确保尝试这一点,

function get_all_sorted_restaurants_with_limit($limit, $sort) {

        $conn = open_database_connection();

        $result = pg_query($conn, "SELECT * FROM restaurant r WHERE r.Type =
 '$sort' LIMIT $limit;");  // see $sort variable

     if($result)
     {
     //success, good to go
     }
    else
    {
     $error = pg_last_error($conn); 
     var_dump($error);
    }
        close_database_connection();

        return $result;     
    }