PHP, если не в CSV, а в базе данных - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть скрипт, где я обновляю сообщения из файла CSV.У меня есть методы вставки и обновления, однако я не могу отработать методы удаления.

Вот функция:

$registration = $csv_data["REGISTRATION"];

function delete_cars_in_db($registration) {
    $car_query = "SELECT * FROM $wpdb->postmeta WHERE meta_key='registration'";

    $delete_car = $wpdb->get_results($car_query);

    foreach($delete_car as $dcar) {
        if($dcar->meta_value != $registration) {
            echo "Delete Car" . $dcar->meta_value;
            wp_delete_post($dcar->post_id);
        }
    }
}

Я считаю, что оператор if не работает.

Я бы подумал, что логика здесь будет такой: если она не в CSV, а в базе данных, то удалите сообщение.

Это для плагина WordPress.

есть идеи?

1 Ответ

0 голосов
/ 28 февраля 2019

Если я правильно понимаю вашу желаемую логику:

"Удалить сообщение автомобиля из БД, если регистрация не соответствует в CSV"

...то может привести вас на правильный путь:

function delete_cars_in_db() {

    // Get list of cars in DB
    $car_query = "SELECT id, meta_value FROM $wpdb->postmeta WHERE meta_key='registration'";
    $cars_in_db = $wpdb->get_results($car_query);

    // Get list of cars from CSV
    $cars_in_csv = array();
    $file = fopen("/path/to/yourfile.csv","r");

    // Loop CSV
    while(!feof($file)){

        $csv_data = fgetcsv($file);

        // Build array of registrations
        $cars_in_csv[] = $csv_data['x']; // Enter column number of `registration` column from your CSV

    }

    fclose($file);


    // Check if the cars from DB exist in CSV - delete if there is no match
    foreach($cars_in_db as $car){

        if(!in_array($car->meta_value, $cars_in_csv)){
            echo "Delete Car" . $car->meta_value;
            wp_delete_post($car->post_id);
        }

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...