2016-09-21 6 views
1

この場合、たとえば
私はperson_code => 1,2,3
の配列から文字列を持っています。その文字列をperson_nama => name1、name2の配列から別の文字列に変更します。 、NAME3
私は私のコードで試してみる:
配列をPHPの文字列に書き換える

public function Person_name($person_code) 
    { 
     $code= explode(',', $person_code); 
     $name=array(); 
     for($i=0; $i<count($code); $i++){ 
      $sql= Yii::app()->db->createCommand('select nm_person from tbl_person where kd_person="'.$code[$i].'";'); 
      $name=$sql->queryRow(); 
     } 
     $namearray= implode(',',$name); 
     return $namaarray; 
    } 


が、それは結果のみのアレイで最後の人の名前を返すされ、
誰も私を助けることができます?ありがとうございました

+1

を読みに基づいて

public function Person_name($person_code) { $persons = array(); $person_code = explode(',', $person_code); if(!empty($person_code)) { $result = Yii::app()->db->createCommand() ->setFetchMode(PDO::FETCH_COLUMN, 0) ->select('nm_person') ->from('tbl_person') ->where(array('IN', 'kd_person', $person_code) ->queryAll(); $persons = implode(', ', $result); } return $persons; } 

あなたが継続的にプッシュし、 '$名[] ='、それを上書きし、そしてなぜちょうど 'WHEREを使用していませんIN'句では、 'Yii'はすでにどこかでAPIを使用していますが、WHERE IN句メソッドを受け入れ、それに整数の配列を受け入れることは確信しています – Ghost

答えて

1

私はちょうど正常に結果を配列に押しているだけで、バンドエイドソリューションを使用してこれに答えるだろう。あなたの現在のコードはちょうど$nameを上書きしています。

$name[] = $sql->queryRow(); 

しかし、

変数をクエリ文字列に直接挿入しないでください。これをやめて、あなたはすでに役に立つフレームワークを使い、有用なクエリービルダーを使用しています。

各IDに対して各クエリを実行する代わりに、WHERE IN節フレーバーをビルダーと共に使用してみましょう。

はるかに良いテストされていない基本的な考え方:manual

+0

回答ありがとうございました。あなたのコードを試してみてください。しかし、Array Helper.phpのエラーは、私がYii 1.xxを使用しているためだと思います。 –

+0

@ YanuarIhsan oh okay thatsなぜ、私はそれを変更しましたあなたが使用しているバージョン、私はそれをeedited – Ghost

+0

それは素晴らしいアイデアを動作させる...ありがとう@Ghost –

関連する問題