如果DB具有重复,并且重复一个值具有特定的值,如何隐藏DB



我正在尝试从数据库中获取所有产品,但隐藏这些产品的重复并且具有meta_value'cx'.一个产品可以具有meta_value ='nb','cx'或'rn'。如果meta_value是cx -hide,则其'nb'或'rn' - 显示它们。但是,如果产品是复制的,并且一个是一个是nb的元value,另一个是cx-不显示。如果NB和RN-显示 - 显示。我的代码:

    global $wpdb;
    $results = $wpdb->get_results($wpdb->prepare("SELECT id FROM wp_frm_items WHERE user_id=%d ORDER BY created_at DESC", $user_id));
    //$array = array();
    if ($results) {
    foreach($results as $row) {
      $policy_transaction_type = $wpdb->get_results($wpdb->prepare("SELECT meta_value FROM wp_frm_item_metas WHERE field_id=%d AND item_id=%s", 390, $row->id));
      $policy_transaction_type = $policy_transaction_type[0]->meta_value;
      $policy_id = $wpdb->get_results($wpdb->prepare("SELECT  meta_value FROM wp_frm_item_metas WHERE field_id=%d AND item_id=%s", 203, $row->id));
      $policy_start_date = $wpdb->get_results($wpdb->prepare("SELECT  meta_value FROM wp_frm_item_metas WHERE field_id=%d AND item_id=%s", 170, $row->id));
      $policy_type_data = $wpdb->get_results($wpdb->prepare("SELECT  meta_value FROM wp_frm_item_metas WHERE field_id=%d AND item_id=%s", 200, $row->id));
      $policy_type = $policy_type_data[0]->meta_value;
      // $policy_id = $policy_id[0]->meta_value;
      $policy_wording = ($policy_type == 'Static Caravan / Park Home / Chalet')?'/wp-content/uploads/2017/08/Static-Caravan-Wording.pdf':($policy_type == 'Touring Caravan'?'/wp-content/uploads/2017/08/Tourer-Wording.pdf':'/wp-content/uploads/2017/08/Lodge-and-Park-Home-Wording.pdf');
      $policy_summary = ($policy_type == 'Static Caravan / Park Home / Chalet')?'/wp-content/uploads/2017/08/Static-Caravan-Policy-Summary.pdf':($policy_type == 'Touring Caravan'?'/wp-content/uploads/2017/08/Tourer-Policy-Summary.pdf':'/wp-content/uploads/2017/08/Lodge-and-Park-Home-Policy-Summary.pdf');
      $dateUK = date("d/m/Y", strtotime($policy_start_date[0]->meta_value));
      if(!empty($policy_id)){
        $array[] = $policy_id[0]->meta_value;
      }     
       //foreach ($array as $key) {
       if ($policy_transaction_type != 'CX') {

,但现在返回所有产品。预先感谢

您的代码似乎没有正确的方法。我建议改用排除逻辑。这是如何做的方法:

$excludes=array();
$results_exclude = $wpdb->get_results(
 "SELECT item_id FROM wp_frm_item_metas where meta_value LIKE '%CX%'"
);
foreach($results_exclude as $rex) {$excludes[]=$rex->item_id;}
$results = $wpdb->get_results(
$wpdb->prepare(
"SELECT id FROM wp_frm_items WHERE user_id=%d and id NOT IN (%s) 
 ORDER BY created_at DESC",
$user_id,implode(',',$excludes)));

仅此而已。$结果将为您提供没有任何meta_value = cx行的ID-S。

最新更新