【问题标题】:CodeIgniter query errorCodeIgniter 查询错误
【发布时间】:2012-08-18 12:23:10
【问题描述】:

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

任何帮助将不胜感激!

【问题讨论】:

  • 转义"SELECT name FROM products WHERE category=".$c_name
  • 给出错误Unknown column 'Aata' in 'where clause' SELECT name FROM products WHERE category=Aata

标签: php database codeigniter


【解决方案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();
} 

但不确定这是否安全。

【讨论】:

  • 现在它给了我错误 Unknown column 'Aata' in 'where clause' SELECT name FROM products WHERE category=Aata 但是 Aata 是一个类别
【解决方案2】:

我可能有点偏离,但你为什么不尝试这样的事情: (使用活动记录使查询更“可读”) 型号:

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

【讨论】:

  • hmm 确保您的列名完全匹配,或者首先确保您的数据库表“产品”中有一个名为 category 的列
  • 你在用mysql吗,如果是,你试过在mysql提示符下运行查询吗?
【解决方案3】:

你可以给:

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

它会正常工作的。

【讨论】:

    猜你喜欢
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多