无法在bindparam PDO中使用ORDER BY和ASC / DESC

时间:2018-04-05 02:03:01

标签: php mysql sql pdo php-7

我遇到了绑定ORDER BY和PDO方向的问题。从我在网上看到的情况来看,你需要将SQL运算符绑定到查询中,但这不是我对params数组所做的事情吗?我似乎在这里正确地做了一切,所以我不明白它为什么不起作用。

/**
 * Runs a query on the database
 * @param  mixed $params Array containing query and bind params
 * @return mixex         Raw database object
 */
public static function runQuery($params) {
    // Prepare Query
    $preparedQuery = Database::connection()->prepare($params["query"]);

    // Execute Query
    $preparedQuery->execute($params["params"]);

    // Return results
    return $preparedQuery;
}

/**
 * Lists all values from a table
 * @param  string $table What table to query
 * @return array            Associative array from specific table with all values
 */
public static function getAll($table, $order, $direction) {
    // List of results from database
    $data = Utilities::runQuery([
        "query" => "SELECT * from `$table` ORDER BY :order :direction",
        "params" => [
            ":order" => $order,
            ":direction" => $direction
        ]
    ]);

    // Return list
    return $data->fetchAll(PDO::FETCH_ASSOC);
}

1 个答案:

答案 0 :(得分:0)

ORDER BY条款中,我认为您无法使用占位符。

只能绑定值,而不能绑定列名。