2015-08-27 222 views
1

嘿,我是codeigniter的新手。我有在從這裏我的數據庫獲取數據的問題,是我的getOne功能CodeIgniter從數據庫中提取數據

public function getOne($sku){ 

    $ans = 0; 
    $query = $this->db->query('SELECT * FROM barcode_sku WHERE sku = "$sku"'); 
    $res = $query->result(); 
    $row = $res[0]; 
    $ans = $row->quantity; 


    return $ans; 
} 

變量$ SKU將有像bc_001或bc_002值....問題是,如果我硬編碼這個值即bc_001在我查詢它正確地獲取結果,但是當我在查詢中使用變量$ sku時,它不起作用。請幫忙。

+0

我有問,你確定$ sku設置正確嗎? – CumminUp07

回答

1

因爲您使用單引號來扭曲您的查詢語句,php不會在該查詢中刪除該變量,而是使用雙引號來允許php解釋$ sku變量。

$query = $this->db->query("SELECT * FROM barcode_sku WHERE sku = \"$sku\""); 

另外不要忘記逃避$ sky變量以避免SQL注入。

更好的解決方案是使用codeigniter主動記錄。

http://www.codeigniter.com/userguide2/database/active_record.html

+0

非常感謝你 –

0

可能是你可以修改本查詢:

public function getOne($sku){ 

    $ans = 0; 
    $sql= 'SELECT * FROM barcode_sku WHERE sku = ?'; 
    $query = $this->db->query($sql, array($sku)); 
    $res = $query->result(); 
    $row = $res[0]; 
    $ans = $row->quantity; 


    return $ans; 
} 
0

請試試這個 -

public function getOne($sku) 
{ 
    $this->db->select('*'); 
    $this->db->from('barcode_sku'); 
    $this->db->like('sku ', $sku,'after'); 
    $query = $this->db->get(); 
    return $query->result_array(); 
} 

它會返回一個數組..