2016-07-08 70 views
1

使用ACF Pro,我在數據庫中wp_postmeta我有2 meta_keydich_vu_%_name_servicedich_vu_%_price_service。兩者都有價值,所以我如何查詢並返回爲()。或者如果MySQL不能處理它,那麼我怎樣才能將這些查詢的2個數組合併成這樣的一個?MySql查詢或合併到數組1

array(objects(['name_service'] => Test,['price_service'] => 9999)) 

這裏是我的代碼,我試圖

function getAllFaqs() { 
global $wpdb; 
    $results = $wpdb->get_results($wpdb->prepare( 
    "SELECT DISTINCT meta_value FROM {$wpdb->prefix}posts,{$wpdb->prefix}postmeta WHERE meta_key LIKE %s AND post_name = %s", 
    'dich_vu_%_name_service', 
    'bang-gia-dich-vu' 
)); 
    $results2 = $wpdb->get_results($wpdb->prepare( 
    "SELECT DISTINCT meta_value FROM {$wpdb->prefix}posts,{$wpdb->prefix}postmeta WHERE meta_key LIKE %s AND post_name = %s", 
    'dich_vu_%_price_service', 
    'bang-gia-dich-vu' 
)); 

    $array = array(); 
    foreach ($results as $result) { 
     $array[]['name_service'] = $result->meta_value; 
    } 
    $array = $array; 
    $array2 = array(); 
    foreach ($results2 as $result2) { 
     $array2[]['price_service'] = $result2->meta_value; 
    } 
    $array2 = $array2; 
    $array3 = array_combine($array,$array2); 

感謝您的幫助!

回答

0

聯盟是你的朋友,你可以結合兩個查詢(請記住,這兩個結果集必須具有相同的列數和相同類型和按順序):

$query1 = $wpdb->prepare( 
    "SELECT DISTINCT meta_value FROM {$wpdb->prefix}posts,{$wpdb->prefix}postmeta WHERE meta_key LIKE %s AND post_name = %s", 
    'dich_vu_%_name_service', 
    'bang-gia-dich-vu' 
); 
$query2 = $wpdb->prepare( 
    "SELECT DISTINCT meta_value FROM {$wpdb->prefix}posts,{$wpdb->prefix}postmeta WHERE meta_key LIKE %s AND post_name = %s", 
    'dich_vu_%_price_service', 
    'bang-gia-dich-vu' 
); 

$results = $wpdb->get_results($query1.' UNION '.$query2); 

檢查docs

PS:我不知道WordPress的,但看到prepare返回消毒查詢字符串所以之間的UNION應該工作

0

爲什麼你把它作爲非常複雜。簡單地使用像這樣作爲WordPress的標準

global $wpdb; 
// Instead of passing post slug, you need to use post id here 
$myvals1 = get_post_meta($post->ID,"dich_vu_%_name_service", true); 
$myvals2 = get_post_meta($post->ID,"dich_vu_%_price_service", true); 

$obj = new StdClass(); 
$obj->name_service = $myvals1; 
$obj->price_service = $myvals2; 

$res = array($obj); 

// result 
array(1) { 
    [0]=> 
    object(stdClass)#245 (2) { 
    ["name_service"]=> 
    string(4) "Test" 
    ["price_service"]=> 
    string(4) "9999" 
    } 
} 
+0

陣列(1){ [0] => 對象(stdClass的)#2145(2){ [ 「的name_service」] => 陣列(6){ [0] => 對象(stdClass的)#2157(1){ [ 「meta_value」] => 串(3) 「ACF」 } [1] => 對象(stdClass的)#2156(1) {「meta_value」] => string(24)「Triple Test」 } } [「price_service」] => 陣列(6){ [0] => 對象(stdClass的)#2151(1){ [ 「meta_value」] => 串(6) 「15000」 } [1] => 對象( stdClass的)#2150(1){ [ 「meta_value」] => 串(7) 「19000」 } } } } – ngocdung

+0

這表明我喜歡that.But我想是這樣的:陣列(2){ [0] => 對象(stdClass的)#2145(2){ [ 「的name_service」] =>串(3) 「ACF」 [ 「price_service」] =>串(6) 「150000」 } [1] => object(stdClass)#2145(2){ [「name_service」] => string(3)「Triple Test」 [「price_service」] => string(6)「150000」 } } – ngocdung

+0

你能告訴我'bang-gia-dich-vu'後面有多少個關鍵字'dich_vu _%_ name_service'?因爲單個帖子的Meta鍵是唯一的。你想合併所有帖子中的所有兩個鍵嗎? – Arul