2013-12-23 39 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);