Wordpress wpdb - вставлять записи из загруженного большого CSV-файла в пользовательский плагин - PullRequest
0 голосов
/ 23 октября 2019

Я пишу плагин WordPress, который импортирует записи из загруженного файла CSV. Как это должно работать:

  1. Выбрать файл с диска;

  2. Нажать кнопку загрузки;

  3. Скриптпросмотреть файл и вставить записи (столбец postcode уникален), когда postcode существует, другие поля обновляются.

Теперь некоторый код (упрощенный для этого вопроса):

///...
$handle = fopen($file, "r");
while( ($row = fgetcsv($handle)) !== FALSE ){
   $searcher->wpdb->insert( $searcher->wpdb->prefix . "searcher_postcodes", array(
        "name"     => $row[1],
        "postcode" => $row[0],
        "state" => $row[2],
        "state_short" => $row[3],
        "city" => $row[4],
        "lat" => $row[5],
        "lng" => $row[6]
    ) );
    echo "<br><code>" . $searcher->wpdb->last_query . "</code>";
    if( $searcher->wpdb->insert_id > 0 ){
        $imported++;
        echo "success";
    }else{
        echo "failure";
    }
}

И почти все нормально, но однажды на нескольких записях я получил:

Импорт 16348

INSERT INTO wp_searcher_postcodes (name, postcode, state, state_short, city, lat, lng) VALUES ('Marienwerder', '16348', 'Brandenburg', 'BB', 'Barnim', '52.85', '13.6') успех

Импорт 16352

INSERT INTO wp_searcher_postcodes (name, postcode, state, state_short, city, lat, lng) VALUES ('Marienwerder', '16348', 'Brandenburg', 'BB', 'Barnim', '52.85', '13.6') ошибка

Во втором запросе у меня есть данные из предыдущего запроса, и это ошибка. Так что не каждый. Есть ли способ поставить в очередь или в буфер или что-то в этом роде в каждом запросе в wpdb?

1 Ответ

1 голос
/ 13 ноября 2019

Код выглядит хорошо, я думаю. Возможно проблема в ваших данных. Попробуйте это, чтобы увидеть, являются ли строки действительно уникальными в csv:

echo "<br>" . $row[0] . ": <code>" . $searcher->wpdb->last_query . "</code>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...