我正在使用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();
它会很好用的。