1

私には解決できない大きな問題があります。codeigniter で、これを行ったモデルを作成しました:

public function listazas($mettol, $mennyit, $feltetel)
    {
        $query = "SELECT * FROM vicc ORDER BY ? DESC LIMIT ?,?";
        $query = $this->db->query($query, array($feltetel, $mettol, $mennyit));

        return $query->result_array();
    }

コントローラーで私はそれを使用します:

   $viccek = $this->index_model->listazas(0, 10, "ertekeles");

   $this->load->view('index/index', array(
       'viccek' => $viccek
   ));

そして、ここでSQLはセクションごとの順序を実行しません...なぜですか?

4

3 に答える 3

4

ORDER BY 'column'まあそれはあなたがの代わりにやっているからですORDER BY column

現在の関数を次のように置き換える必要があります。

public function listazas($mettol, $mennyit, $feltetel)
{
    $feltetel = $this->db->escape_like_str($feltetel);
    $query = "SELECT * FROM vicc ORDER BY {$feltetel} DESC LIMIT ?,?";
    $query = $this->db->query($query, array($mettol, $mennyit));

    return $query->result_array();
}

基本的には、その周りをquery()エスケープして$feltetel''列名ではなく文字列のように機能させます。

このような単純なクエリの場合は、ActiveRecordsを使用すると簡単に実行できます。

echo $this->db->last_query();後にを実行$this->db->query()して結果を比較することにより、これを自分でトラブルシューティングすることもできます。その後、あなたは後に
気づいたでしょう。''ORDER BY

于 2012-05-18T12:36:04.177 に答える