CodeIgniter查询错误


CodeIgniter query error

我正在使用codeIgniter,我真的被它卡住了。

这是我的模型函数

public function get_products_names($c_name)
{
$this->db->query('SELECT name
                  FROM products
                  WHERE category=$c_name');
return $query->result_array();
}   

我从控制器类调用这个函数,如下

    $this->load->model('products_model');
    $data['products_categories'] = $this->products_model->get_products_names('Aata');
    echo $data['products_categories']['name'];

它给了我以下错误,我不知道为什么

A Database Error Occurred
Error Number: 1054
Unknown column '$c_name' in 'where clause'
SELECT name FROM products WHERE category=$c_name
Filename: C:'wamp'www'OSW_appnsys'misystemsys'database'DB_driver.php
Line Number: 330

如有任何帮助,我们将不胜感激!

将单引号改为双引号。http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double

双引号字符串最重要的特性是变量名将被扩展。

public function get_products_names($c_name)
{
$this->db->query("SELECT name
                  FROM products
                  WHERE category=$c_name");
return $query->result_array();
} 

但不确定这样做是否安全。

我可能有点偏离,但你为什么不试试这样的方法呢:(使用活动记录使查询更"可读")型号:

public function get_products_names($c_name)
{
$this->db->select('name');
$this->db->where('category',$c_name);
$query = $this->db->get('products');
if($query->num_rows) 
return $query->result();
return false;
} 

控制器:

$names_arr = array();
$this->load->model('products_model');
$result = $this->products_model->get_products_names('Aata');
foreach($result as $r){
array_push($names_arr,$r->name)
}
print_r($names_arr);

您可以给出为:

$this->db->query('SELECT name
              FROM products
              WHERE category='.$c_name);
return $query->result(); / return $query->row_array();

它会很好用的。