Замена ключа заголовка PHP csv в цикле while - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь заменить 'category names' на соответствующие 'category id', когда время импорта CSV в таблицу mysql.

может кто-нибудь помочь мне с правильным подходом замены заголовков csv с идентификаторами белого списка вforeach php?

ниже приведен мой скрипт, который я пробовал, ключи не заменяются, как ожидалось.

причина, по которой я делаю эту замену имени с идентификатором, может быть несколькоисправление орфографических изменений в именах категорий в основной таблице в будущем.

, поэтому в то время мне нужно обновить таблицу пакетов, а это не очень хорошая идея, чтобы избежать этого, я заменяю имя категории на id и вставляю в таблицу пакетов.

<?php
    $category_id = $post['category_id'];
    //query master table and get category details
    $header_qry = $con->prepare("SELECT category_name,category_id FROM category where category_id=:category_id and status=1");
    $header_qry->bindParam(':category_id', $category_id);
    $header_qry->execute();

    while ($header_qry_data = $header_qry->fetch(PDO::FETCH_ASSOC)) {

        $header_names[] = $header_qry_data['category_name'];
        $header_name_id[] = $header_qry_data;
    }

    $keys = [];
    $csvheders = fgetcsv($source);

    foreach ($csvheders AS $value) {
        if ($value) {
            $keys[] = $value;
        }
    }

    if(count(array_intersect($header_names, $csvheders)) !== count($csvheders)) {
        $messageSession[] = array('type' => 'danger', 'message' => 'Columns Mismatch');
        $_SESSION['alert_messages'] = $messageSession;
        header("location:cat_upload.php");
    } else {

        function searchMultiArrays($val, $array) {
            foreach ($array as $element) {
                if ($element['category_name'] == $val) {
                    return $element['category_id'];
                }
            }
            return null;
        }

        while ($csvdata = fgetcsv($source)) {
            foreach ($csvdata as $k => $v) {
                unset($csvdata[$k]);

                // set the key (based on the keys array established above)
                $keyvals = $keys[$k];
                $new_key = searchMultiArrays("$keyvals", $header_name_id);
                $csvdata[$new_key] = $v;
            }

            $cat_details = json_encode($csvdata, JSON_FORCE_OBJECT);

            //insert category details into batch table
            $insert_json = $con->prepare("insert into batch_detail (batch_id,cat_details) values (:batch_id,:cat_details)");
            $insert_json->bindParam(':batch_id', $batch_id);
            $insert_json->bindParam(':cat_details', $cat_details);
            $insert_json->execute();
        }
        $messageSession[] = array('type' => 'success', 'message' => 'Details Uploaded Successfully');
        $_SESSION['alert_messages'] = $messageSession;
        header("location:upload_summary.php");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...