使用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()(我已经尝试过,没有工作......)。
答案 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;
}