2013-11-01 2 views
0
global $wpdb, $bp; 
$result = $wpdb->get_results("SELECT user_id FROM wp_bp_xprofile_data WHERE value = '$_POST[language]' OR value = '$_POST[budget]' OR value = '$_POST[style]'LIMIT 0 , 30"); 
print_r($result); 

Выход:, как использовать Еогеасп с объектом массива

Array ([0] => stdClass Object ([user_id] => 2) 
     [1] => stdClass Object ([user_id] => 2) 
     [2] => stdClass Object ([user_id] => 2) 
     [3] => stdClass Object ([user_id] => 4)) 

Я хочу значение как запятую строки.

+0

это вам сказать, что значение в массиве Object .... –

+0

доступа, например, первый user_id так: $ result [0] -> user_id –

+0

или foreach ($ result as $ r) {print_r ($ r-> user_id);} –

ответ

0

hier - возможное решение;

<?php 
    global $wpdb, $bp; 
    $result = $wpdb->get_results("SELECT user_id FROM wp_bp_xprofile_data WHERE 
       value = '$_POST[language]' OR value = '$_POST[budget]' 
       OR value = '$_POST[style]'LIMIT 0 , 30"); 
    $str_ids = ''; 
    foreach($result as $r) { 
     $str_ids .= ('' == $str_ids) ? '' : ', '; 
     $str_ids .= $r->user_id; 
    } 
    print_r($str_ids); 
+0

wow вы удивительные парни ... вы знаете, я пробовал 5 дней и получаю решение 30 минут. Что такое отходы, которые я сделал. Работает отлично, но есть дубликат id, как удалить его. –

+0

Просто замените свой sql: «SELECT DISTINCT user_id от "... И все остальное. Команда «DISTINCT» важна в вашем случае, чтобы избежать дублирования. –

+0

С другой стороны, нижний ответ диануи с использованием get_col кажется хорошим способом достижения ваших целей и использования команды DISTINCT. –

0

Использование get_col из wpdb, когда вы должны получить один столбец

$result = $wpdb->get_col("SELECT user_id FROM wp_bp_xprofile_data WHERE value = '$_POST[language]' OR value = '$_POST[budget]' OR value = '$_POST[style]'LIMIT 0 , 30"); 

echo implode(",",$result); 
or 

echo join(",",$result); 
1

get_results() будет возвращать объект. Вы можете просто петля через объект и получить доступ к идентификатор с использованием объекта обозначения, например, так:

$arr = array(); 
foreach ($result as $k => $id) { 
    $arr[] = $id->user_id; 
} 
$string = implode(',', $arr); 

В качестве альтернативы, вы можете использовать get_col() вместо:

$result = $wpdb->get_col("SELECT user_id 
FROM wp_bp_xprofile_data 
WHERE value = '$_POST[language]' OR value = '$_POST[budget]' 
OR value = '$_POST[style]'LIMIT 0 , 300"); 

И теперь, чтобы получить строку разделенных запятыми , использование implode():

$string = implode(',', $result); 
+0

'get_row()' будет возвращать одну строку не все http: // codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row –

+0

@dianuj: уже обновлен ответ :) –

+0

В настоящее время я работаю над buddypress, поэтому мне нужно использовать get_result. –

0

Попробуйте это:

$str=implode(",",json_decode(json_encode($result),true)); 
Смежные вопросы