вставьте строку массива с запятой, затем разделите ее - PullRequest
0 голосов
/ 27 апреля 2018

несколько значений поля представляют собой строку, подобную этой: "IDX, CLV1, FLST, MRIS, RCOM, VOW, CLV2, HTA, CYBR, ILAX, HOL"

Когда я запускаю его через $dataValues = implode(", ", $ArrayValues);, оно разделяется запятыми, мне нужно сохранить эту строку как одно значение.

вот еще код:

foreach($result as $listing){  //loops throught every listing.
$fields = $listing->toArray(); //convert listing fields and values to array

 foreach($fields as $field => $value){
    $ArrayValues[] = $value; //value being added to array
    $ArrayFields[] = $field; //field name being added to array
    unset($value); 
    unset($field);
 }
 //CREATE THE MYSQL STRING FOR THE VALUES.
 $dataValues = implode(", ", $ArrayValues); 
 unset($ArrayValues);

 //CREATE THE MYSQL STRING FOR THE FIELD NAMES
 $fieldTitleNames = '`' . implode('`, `', $ArrayFields) . '`'; 
 unset($ArrayFields);

 //CONVERTE FIELDS ARRAY TO MYSQL STRING   
 $fieldTitleNames = '`' . implode('`, `', $ArrayFields) . '`';
 unset($ArrayFields);

 //CONVERT VALUES ARRAY TO MYSQL STRING       
 $fieldTitleNames = '`' . implode('`, `', $ArrayFields) . '`';
 unset($ArrayFields);

 $sql1 = "INSERT INTO ".$table_name." ($fieldTitleNames) VALUES $dataValues)";
}

Спасибо за ваше терпение.

1 Ответ

0 голосов
/ 27 апреля 2018

вместо взрыва после создания массива, создайте строку во время цикла

так

$ArrayValues[] = $value; //value being added to array

становится

$dataValues.=  $value.',';

внутри цикла.

Вы должны инициализировать строку $dataValues перед циклом:

$dataValues='';

и после цикла удалите последнюю добавленную запятую

$dataValues=rtrim(',',$dataValues);

это позволяет избежать побочного эффекта от использования взрыва в вашем случае

...