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

标签 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); 

 }

其中“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/

相关文章:

node.js - 使用 postgres 在 sequelize 中按嵌套对象值查找

sql - 查询在 PostgreSQL 中除以零错误

sql - 比较 postgres 中的数组

sql - ORDER BY CASE WHEN ... ELSE ... END 在 PostgreSQL 中

php - 实现 Payum/Laravel 循环支付

php - 使用 php 变量创建动态 mysql 查询

php - jQuery $.post() 和 MySQL 问题

sql - 使用设备的最新数据对一系列设备标记的数据求和

php - 下载到root并从数据库中删除文件后

PHP - 调试 curl