2013-10-20 65 views
-1

Yii的SQL命令我有下面的代碼序列:與WHERE子句中不工作

if (is_array($team) && !empty($team)) { 
    $where_clause = "WHERE te.name IN ("; 
    $in_elems = array(); 
    foreach ($team as $key => $value) { 
     $in_elems[] = "':team_$key'"; 
    } 
    $where_clause .= implode(',', $in_elems) . ")"; 
    $query = "SELECT p.name FROM " . Yii::app()->params['team_tbl'] . " te 
     LEFT JOIN " . Yii::app()->params['player_tbl'] . " p ON te.id = p.team_id 
     $where_clause 
     ORDER BY te.name, p.name ASC 
    "; 
    $command = $conn->createCommand($query); 
    foreach ($team as $key => $value) { 
     $command->bindValue(":team_$key", $value); 
    } 
} else { 
    .... 
} 
if ($command) { 
    $dataReader = $command->query(); 
    print_R($dataReader->count()); ---> here is 0!!! 
    while(($player = $dataReader->read()) !== false) { 
     $players[] = array(
      'label'=>$player['name'], 
      'id'=>$player['name'], 
    ); 
} 

當我運行這段代碼序列,DataReader的似乎是空的,我不`噸知道爲什麼。

+0

什麼'的var_dump($查詢)'說明了什麼? – raina77ow

+0

plz var_dump您對我們的$查詢 – tinybyte

回答

0

首先的foreach循環

$in_elems[] = ":team_$key"; 

而不單逗號字符。

0

DO queryAll():

$dataReader = $command->queryAll(); 
+0

可以爲您的答案添加一些解釋嗎? – Stephan

1

該問題與綁定PDO參數有關,但目前無法調試。我可以給你變的更優雅的工作解決方案(使用查詢生成器):

$models = Yii::app()->db->createCommand() 
    ->select('p.name') 
    ->from('team te') 
    ->join('player p', 'te.id=p.team_id') 
    ->where(array('in', 'te.id', $team)) 
    ->order('te.name, p.name ASC') 
    ->queryAll(); 

$players = array(); 
foreach ($models as $model) { 
    $players[] = array(
     'label' => $model['name'], 
     'id' => $model['name'] 
    ); 
}