使用 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);
}
其中“sort”是 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;
}
这就是事情变得奇怪的地方:当我尝试在 get_all_sorted_restaurants_with_limit 方法中使用 $sort 执行此操作时,它什么也不返回。但是,如果我自己设置它(即“体育栏”,如下所示:
$result = pg_query($conn, "SELECT * FROM restaurant r WHERE r.Type = 'sports bar' LIMIT $limit;");
它有效。 var 转储显示这与从查询 url 中获取的字符串完全相同。
我该如何解决这个问题?我是否需要转换它,或者捕获一个 strval() (我已经尝试过,不起作用......)。
最佳答案
看起来您只是缺少 $sort
周围的单引号:
$result = pg_query($conn, "SELECT * FROM restaurant r WHERE r.Type = '$sort' LIMIT $limit;");
关于PHP - 无法将 URL 查询字符串传递给模型以进行数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29573521/