Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter-查询绑定“;“订购”;_Php_Sql_Codeigniter - Fatal编程技术网

Php CodeIgniter-查询绑定“;“订购”;

Php CodeIgniter-查询绑定“;“订购”;,php,sql,codeigniter,Php,Sql,Codeigniter,在我的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)); 但是“订单”不能正常工作

在我的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));
但是“订单”不能正常工作。我已经搜索过了,但我不确定如何“清理”“orderby”子句

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

试着用这种方法

$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 :) ...

这不会清理$order_by的值-不会阻止order_by变量上的SQL注入。我认为它在某种程度上是安全的。我通过URL运行上面的查询,如下所示——现在,我可以从用户处执行以下SQL注入*——注入的查询将返回结果——因此我认为它不安全。这是有道理的,但似乎有点老套!它不应该是if(在数组中)而不是if(!在数组中)?是的。这取决于你。我刚才说了一个主意。:)刚试过,效果非常好。:)我也喜欢听到别人更多的想法。
$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 :) ...