-2

我正在使用 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

任何帮助将不胜感激!

4

3 回答 3

1

将单引号更改为双引号。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();
} 

但是,不确定这是否是安全的方法。

于 2012-08-18T12:25:10.427 回答
0

i may be deviating a little , but why dont you try something like this : (Use active records makes the query more "readable") Model:

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;
} 

controller :

$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);
于 2012-08-18T12:47:33.737 回答
0

你可以给:

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

它会正常工作。

于 2012-08-21T08:49:42.990 回答