PHP,如果不是在CSV中而是在数据库中
我有一个从CSV文件更新帖子的脚本。我有insert和update方法,但是我无法计算delete方法 以下是函数: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 = $
$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!非常感谢你!你已经解决了我的问题,这个效果很好@史蒂文哈迪很高兴这有帮助。