2016-09-21 3 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

읽기를 바탕으로 당신이 그것을 덮어 쓰기를하고,'$ 이름 [] =', 지속적으로 추진, 그 이유는 단지 'WHERE 사용하지 IN' 절, 나는'Yii'가 이미 API를 사용하고 있으며, WHERE 절 절을 받아들이고 정수 배열을 받아 들인다는 것을 확신합니다. – Ghost

답변

1

그냥 결과를 배열로 밀어 넣는 것만으로도 반창고 솔루션을 사용하면됩니다. 현재 코드가 $name을 덮어 쓰는 중입니다.

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

하지만.

변수를 쿼리 문자열에 직접 삽입하지 마십시오. 그만하면 유용한 쿼리 빌더가있는 좋은 프레임 워크를 이미 사용하고 있습니다.

각 id에 대해 각 쿼리를 실행하는 대신 WHERE IN 절을 빌더와 함께 사용하지 않는 것이 좋습니다.

훨씬 나아 검증되지 않은 기본 개념 :

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; 
} 

manual

+0

응답 해 주셔서 감사합니다. 좋은 생각입니다. 귀하의 코드를 시도하지만, Array Helper.php의 오류, 나는 그것이 Yii 1.xx를 사용하기 때문에라고 생각한다. –

+0

@ YanuarIhsan 오, 괜찮아. 왜 그런지, 내가 그것을 바꿨다. 당신이 사용하고있는 버전, 내가 그것을 – Ghost

+0

eedited, 좋은 생각 ... 고마워요. 고스트 –