PHP,如果不是在CSV中而是在数据库中

PHP,如果不是在CSV中而是在数据库中,php,wordpress,csv,Php,Wordpress,Csv,我有一个从CSV文件更新帖子的脚本。我有insert和update方法,但是我无法计算delete方法 以下是函数: $registration = $csv_data["REGISTRATION"]; function delete_cars_in_db($registration) { $car_query = "SELECT * FROM $wpdb->postmeta WHERE meta_key='registration'"; $delete_car = $

我有一个从CSV文件更新帖子的脚本。我有insert和update方法,但是我无法计算delete方法

以下是函数:

$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);
        }
    }
}
我认为国际单项体育联合会的声明不起作用

我认为这里的逻辑是: 如果它不在CSV中,但在数据库中,则删除该帖子

这是一个wordpress插件


有人有什么想法吗?

如果我正确理解您想要的逻辑:

如果注册在CSV中没有匹配项,则从DB中删除car post

…那么这可能会让你走上正轨:

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

    }

}

你测试过if语句了吗?如果是,结果是什么。如果没有,为什么不呢?如果是我,我会回显$registration和$dcar->meta_value,看看它们在每次迭代中是相同的还是不同的。在上面的评论的基础上,也许可以使用var_dump来输出变量-因为可能会有流氓空格,如果需要的话,你可以删掉它们。@Bernhard@dmikester1我已经做到了。CSV中有5行,当它们都相同时,在迭代中会发生什么,表示没有要删除的车辆,但是当其他4行的内容不同时,表示删除车辆,因此if不起作用。我想我把注册放在一个数组中,然后使用if!在数组中{然后删除}?嘿@lumonald!非常感谢你!你已经解决了我的问题,这个效果很好@史蒂文哈迪很高兴这有帮助。