【问题标题】:CodeIgniter - query binding "order by"CodeIgniter - 查询绑定“order by”
【发布时间】:2013-05-08 08:18:54
【问题描述】:

在我的 CodeIgniter 中,我将查询绑定到一组变量。

$q        = "SELECT * FROM my_table WHERE name=? ORDER BY ?";
$name     = $this->input->get("name");
$order_by = $this->input->get("order_by");
$this->db->query($q, array($name, $order_by));

但是“order_by”不能正常工作。我已经搜索过了,但我不确定如何“清理”“order by”子句。

【问题讨论】:

    标签: php sql codeigniter


    【解决方案1】:

    试试这个方法,

    $order_by_arr = array('name', 'age', 'date');
    if (!in_array($order_by, $order_by_arr)) {
      $order_by = 'name';
    }
    
    // now u can use $order_by. its safe :) ...
    

    【讨论】:

    • 嗯。有道理,但似乎有点老套!
    • 不应该是 if(in_array) 而不是 if(!in_array)?
    • 是的。取决于你。我只是说一个想法。 :)
    • 刚刚试了一下,效果很好。 :) 也喜欢听到其他人的更多想法。
    【解决方案2】:
    $order_by = $this->db->escape_like_str($this->input->get("order_by"));
    $q        = "SELECT * FROM my_table WHERE name=? ORDER BY {$order_by}";
    $name     = $this->input->get("name");
    $this->db->query($q, array($name));
    

    参考此链接,这最适合您的要求。

    Query Binding in codeigniter

    【讨论】:

    猜你喜欢
    • 2012-12-31
    • 1970-01-01
    • 2011-05-13
    • 2017-02-11
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    相关资源
    最近更新 更多