2013-12-23 85 views
1

我试图创造警予的查询,但它不是得到所需要的输出,但会抛出错误Yii的查询工作不

$name=array('tata','classmate'); 
    // $result= implode(',', $name); 
    $mydata='("tata","classmate","adas")'; 
    $records=Yii::app()->db->createCommand()->select('productName')->from('products')->where 
("productName IN :name",array(':name'=>$mydata))->queryColumn(); 
    var_dump($records); 

错误:-MySQL server version for the right syntax to use near ''(\"tata\",\"classmate\",\"adas\")'' at line 3

注: -$mydata is dynamic

如果我试试这个

"productName IN $mydata"然后它的工作完美

+2

你已经发布的代码似乎是不完整的。你可以检查一下吗?你怎么生成where子句?无法从您的帖子中看到它。 – Latheesan

+0

抱歉..更新了问题 –

回答

3

看来你是不正确地建立where子句。这里有一个如何做WHERE子句与输入范围的列表:

// WHERE id=1 or id=2 
where('id=1 or id=2') 
// WHERE id=:id1 or id=:id2 
where('id=:id1 or id=:id2', array(':id1'=>1, ':id2'=>2)) 
// WHERE id=1 OR id=2 
where(array('or', 'id=1', 'id=2')) 
// WHERE id=1 AND (type=2 OR type=3) 
where(array('and', 'id=1', array('or', 'type=2', 'type=3'))) 
// WHERE `id` IN (1, 2) 
where(array('in', 'id', array(1, 2)) 
// WHERE `id` NOT IN (1, 2) 
where(array('not in', 'id', array(1,2))) 
// WHERE `name` LIKE '%Qiang%' 
where(array('like', 'name', '%Qiang%')) 
// WHERE `name` LIKE '%Qiang' AND `name` LIKE '%Xue' 
where(array('like', 'name', array('%Qiang', '%Xue'))) 
// WHERE `name` LIKE '%Qiang' OR `name` LIKE '%Xue' 
where(array('or like', 'name', array('%Qiang', '%Xue'))) 
// WHERE `name` NOT LIKE '%Qiang%' 
where(array('not like', 'name', '%Qiang%')) 
// WHERE `name` NOT LIKE '%Qiang%' OR `name` NOT LIKE '%Xue%' 
where(array('or not like', 'name', array('%Qiang%', '%Xue%'))) 

看一看the Yii query builder article/guide

因此,要让它为你工作..试试这个:

$mydata = array('tata','classmate', 'adas'); 

$records = Yii::app()->db->createCommand() 
    ->select('productName') 
    ->from('products') 
    ->where(array('in', 'productName', $mydata) 
    ->queryColumn(); 

var_dump($records); 
+0

谢谢,它工作:) –

1

尝试......

$mydata = array('tata','classmate', 'adas'); 

$records = Yii::app()->db->createCommand() 
    ->select('productName')->from('products') 
    ->where(array('in', 'productName', $mydata)) 
    ->queryColumn(); 

var_dump($records);