2015-07-14 1 views
1

Вот мой запрос:

global $wpdb; 
$result = $wpdb->get_results("SELECT NAME_MYCOLUMN FROM NAME_TABLE"); 
foreach ($result as $row) 
{ 
    $data = "$row-> NAME_MYCOLUMN|"; 
} 
$val = "'/\b($data)\b/i'"; 
echo $val; 

я получаю это:

где word1 это последнее значение.

Вместо этого, я хотел бы, чтобы это:

'/\b(word1|word2|word3|word4|.......)\b/i' 

Моя цель состоит в том, чтобы получить все значения столбцов не только последний.


Спасибо всем, но три предложенных решения не работают хорошо. Результат тот же :( В моей таблице есть более ста слов, но у меня есть:?.

'/\b(word1|word2|word3|word4|word5|word6|word7|word8| 

Есть ли решение

EDIT

меня понять, где ошибка I случайно добавлены в базу данных как слово с ID9 < word9 и это (<) нарушил код после слова с ID 8

ответ

0

Вы можете использовать $wpdb->get_col для извлечения массива значений. Затем используйте implode, чтобы присоединиться к ним с помощью |.

global $wpdb; 
$result = $wpdb->get_col("SELECT NAME_MYCOLUMN FROM NAME_TABLE"); 
$data = implode('|', $result); 
$val = "'/\b($data)\b/i'"; 
+0

Ваше решение очень простое, и оно было самым быстрым. Спасибо – MasterRed

0
global $wpdb; 
$result = $wpdb->get_results("SELECT NAME_MYCOLUMN FROM NAME_TABLE"); 
$val = "'/\b("; 
foreach ($result as $row) 
{ 
    $val .= "$row-> NAME_MYCOLUMN|"; 
} 
$val .= ")\b/i'"; 

echo $val; 
+0

Ваше решение отлично работает. Спасибо – MasterRed

0

Вы можете использовать GROUP_CONCAT вернуть все строки в одной строке

$result = $wpdb->get_results(" 
    SELECT 
    GROUP_CONCAT(NAME_MYCOLUMN SEPARATOR '|') as NAME_MYCOLUMN 
    FROM NAME_TABLE 
"); 
+0

Ваше решение отлично работает. благодаря – MasterRed

Смежные вопросы