Yanuar Ihsan
Yanuar Ihsan

Reputation: 115

PHP rewrite array to string,

in this case, for example,
i have string from array of person_code => 1,2,3
then i want change that string to another string from array of person_nama => name1, name2, name3
i have try with my code :

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


but that result is only return the last person name in array,
anyone can help me?? thank you

Upvotes: 1

Views: 125

Answers (1)

Kevin
Kevin

Reputation: 41885

I'd just answer this by just using a band-aid solution with just normally pushing the results into the array. Your current code is just overwriting $name.

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

But.

Don't directly interpolate variables into the query string. Just stop that, you're already using a good framework with useful query builder.

Instead of executing each query for each id, why not use a WHERE IN clause flavor along with the builder.

Much better untested basic idea:

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

Based on reading the manual

Upvotes: 1

Related Questions