-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

一重引用符をdoubleに変更します。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

私は少し逸脱しているかもしれませんが、なぜあなたはこのようなことを試してはいけません:(アクティブなレコードを使用するとクエリがより「読みやすく」なります)モデル:

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);
于 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 に答える