这是我的疑问:
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;
我明白了:
'/\b(word1|)\b/i'
其中word1
是最后一个值。
相反,我想有这个:
'/\b(word1|word2|word3|word4|.......)\b/i'
我的目标是让所有列值不仅仅是最后一列。
谢谢大家,但提出的三个解决方案效果不佳。结果是一样的 :( 在我的表中有超过一百个单词,但我有:
'/\b(word1|word2|word3|word4|word5|word6|word7|word8|
有解决方案吗?
修改
我明白错误在哪里。我不小心将数字添加到数据库中作为ID9< word9和this(<)在ID为8的单词之后打破了代码
答案 0 :(得分: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;
答案 1 :(得分: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'";
答案 2 :(得分:0)
您可以使用GROUP_CONCAT
返回单行中的所有行
$result = $wpdb->get_results( "
SELECT
GROUP_CONCAT(NAME_MYCOLUMN SEPARATOR '|') as NAME_MYCOLUMN
FROM NAME_TABLE
");