【问题标题】:PHP Variables inside SQL WP QuerySQL WP 查询中的 PHP 变量
【发布时间】:2014-01-21 09:18:23
【问题描述】:

我正在使用 wordpress,并且创建了一些自定义函数。它们工作正常,现在我正在向查询中添加排序。

function select_category_events($category, $order)  {
    global $wpdb;
    $table_name = $wpdb->prefix."table";
    $sql = $wpdb->get_results("select * from $table_name where category = '" . $category . "' AND  active = '1' ORDER BY '" . $order . "'");
    return $sql;
}

如果我删除 ORDER BY 并且只有:

$sql = $wpdb->get_results("select * from $table_name where category = '" . $category . "' AND  active = '1'");

它工作正常。如果我用“名称”或要排序的字段替换 $order,它工作正常,只是当我使用变量传递它时它只是忽略它。它仍然显示结果,它们只是未排序。这是我调用该函数的方式。

$order = 'name';
$events = select_category_events($category, $order);

$category 有一个有效的类别,正如我所说,它工作正常,只是当变量被用于排序时。我的语法不正确,还是我应该以不同的方式处理这个问题?

【问题讨论】:

  • 去掉引号,你想按列排序,而不是按字符串ORDER BY $order
  • 是的!做到了!如果您可以将其放入答案中,我愿意接受。感谢您的帮助。

标签: php mysql sql wordpress content-management-system


【解决方案1】:

去掉引号,你想按列排序,而不是按字符串排序

ORDER BY $order 

【讨论】:

    【解决方案2】:

    没有问题,请将您的查询修改为:-

    "select * from $table_name where category = '$category'  AND  active = '1' ORDER BY '$order' ";
    

    如果工作正常,请将其标记为答案,如果没有,请告诉我运行此查询后你得到了什么...

    【讨论】:

    • 没有骰子伙伴。不按变量排序。我回显了该变量以检查它是否不为空,并且它确实包含正确的信息。如果我将 '$order' 替换为变量内的数据,它就可以工作。令人难以置信的混乱,它应该可以工作。
    • 但是,您的完整代码可以在我的机器上使用我的查询,请复制相同的查询并粘贴并再次检查......
    • 我确实复制了查询,正如您所写的那样。问题不是查询,而是变量。如果我将查询中的 '$order' 替换为要排序的字段,则可以正常工作。如果我在调用变量之前回显该变量,它会显示我希望对其进行排序的字段。感谢您的帮助
    • 那么,如果是,您的问题是否已解决,请再次分享您的工作代码
    • 不,没有解决。我需要将一个变量传递给查询。当我这样做时它不起作用。如果我只是使用一个字段而不是变量来排序,它会正确排序。如果我使用变量,它根本不会排序。
    【解决方案3】:

    你必须使用这样的查询:-

    $sql = $wpdb->get_results("select * from $table_name where category = '" . $category . "' AND  active = '1' ORDER BY " . $order);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 2019-02-16
      相关资源
      最近更新 更多