在Zend准备声明中的子声明

时间:2013-10-24 06:19:01

标签: php sql zend-framework

我正在开发一个项目,我需要使用预准备语句来阻止sql注入。虽然我找到了用于查询更新,删除和插入语句的语法。但是对于select查询它不适用于IN子语句。 我想做的如下:

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

但它不起作用。我从其他代码中获取字符串$ arr。

2 个答案:

答案 0 :(得分: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(); 

答案 1 :(得分: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 );

跳这肯定会对你有用