2013-10-24 101 views
0

我正在開發一個項目,在該項目中我需要使用預準備語句來防止sql注入。雖然我發現語法用於更新,刪除和插入語句的查詢。但對於select查詢它不適用於IN子語句。 我嘗試做如下:在Zend Prepared Statement中的子語句

$arr= 'tomwased,eshantsahu'; 
$this->_db->fetchAll("select username,password from user where username in (?)",array($arr))); 

,但它不是working.I正在逐漸從其他代碼字符串$編曲。

+0

什麼是'$這個 - >工作_db'? –

+0

$ DB是一個數據庫適配器。 $ DB = new Zend_Db_Adapter_Pdo_Mysql($ config [「resources」] [「db」] [「params」]); Zend_Registry :: set('DB',$ DB); //保存在註冊表中 $ this - > _ db = Zend_Registry :: get('DB'); //從 –

回答

0
$arr     = array('tomwased','eshantsahu'); 
$db      = Zend_Registry :: get('db'); 
$select     = $db->select(); 
$select     -> from("user",array('username','password')) 
         -> where("username in ?",$arr); 
$stmt     = $db->query($select); 
$result    = $stmt->fetchAll(); 
0

您可以使用的語句像下面

$productIds = array(1, 2, 3); 

$select = $db->select() 
      ->from('products', 
        array('product_id', 'product_name', 'price')) 
      ->where('product_id IN (?)', $productIds); 

而且爲用戶

$username = array('tomwased','eshantsahu'); 

$select = $db->select() 
      ->from('user', 
        array('username', 'password ')) 
      ->where('username IN (?)', $username); 

轉換hopw這將確保你

+0

模型的註冊表中恢復,這是我所嘗試的,但它不返回任何數據,它只是返回一個空數組。 –

+0

請每個$選擇並運行此查詢來指導我的SQL。 – liyakat

相關問題