2016-07-08 7 views
1

Im mit ACF Pro, in der Datenbank wp_postmeta hatte ich 2 meta_key: dich_vu_%_name_service und dich_vu_%_price_service. Beide hatten einen Wert, also wie kann ich sie abfragen und zurückgeben(). Oder wenn MySQL nicht damit umgehen kann, wie kann ich also 2 Arrays dieser Abfrage in eine solche zusammenführen? MySql Abfrage oder merge Array in 1

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

hier ist mein Code habe ich versucht

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

Vielen Dank für Ihre Hilfe!

Antwort

0

Union ist dein Freund, können Sie die beiden Abfragen kombinieren (bedenken Sie, dass beide Ergebnismengen die gleiche Anzahl von Spalten und die gleiche Art und haben muss, um):

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

Überprüfen Sie die docs

PS: ich weiß nicht, Wordpress, aber sah, dass prepare kehrt der hygienisiert Abfrage-String so eine UNION zwischen

0

arbeiten sollte Warum Sie es machen wie viel komplex. verwenden, einfach so wie Word Standard

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

-Array (1) { [0] => Objekt (stdClass) # 2145 (2) { [ "name_service"] => Array (6) { [0] => Objekt (stdClass) # 2157 (1) { [ "meta_value"] => string (3) "ACF" } [1] => Objekt (stdClass) # 2156 (1) { ["meta_wert"] => string (24) "Dreifacher Test" } } ["price_service"] => Array (6) { [0] => Objekt (stdClass) # 2151 (1) { [ "meta_value"] => Zeichenfolge (6) "15000" } [1] => Objekt (stdClass) # 2150 (1) { [ "meta_value"] => string (7) "19000" } } } } – ngocdung

+0

Es hat mir gezeigt, wie that.but ich so wollen: array (2) { [0] => Objekt (stdClass) # 2145 (2) { [ "name_service"] => string (3) "ACF" [ "price_service"] => string (6) "150000" } [1] => objekt (stdClass) # 2145 (2) { ["name_service"] => string (3) "Dreifacher Test" ["price_service"] => string (6) "150000" } } – ngocdung

+0

Könnten Sie mich wissen, 'bang-gia-dich-vu' Beitrag haben wie viele Mata-Schlüssel wie 'dich_vu _% _ name_service' ?. Weil der Meta-Schlüssel eines einzelnen Posts eindeutig ist. Sie möchten alle zwei Schlüssel aus allen Posts zusammenführen, oder? – Arul