我正在构建一个Wordpress网站,在search.php文件中,我正在尝试执行此MySQL查询:
$boards_id = $wpdb->get_col($wpdb->prepare(
"SELECT $wpdb->terms.term_id
FROM $wpdb->terms, $wpdb->term_taxonomy, $wpdb->termmeta
WHERE $wpdb->terms.name LIKE %s
AND $wpdb->terms.term_id = $wpdb->term_taxonomy.term_id
AND $wpdb->terms.term_id = $wpdb->termmeta.term_id
AND $wpdb->term_taxonomy.taxonomy = 'board'
AND $wpdb->term_taxonomy.description != ''
AND $wpdb->termmeta.meta_key = 'category'
AND $wpdb->termmeta.meta_value LIKE '%Dads%'
ORDER BY $wpdb->terms.name ASC
LIMIT $limit, $boards_per_page"
, '%' . get_search_query() . '%'
)
);
我遇到的问题是这个查询条件不起作用:
AND $wpdb->termmeta.meta_value LIKE '%Dads%'
在MySQL结构中,meta_value类型是longtext。数据库中的每个meta_value都包含这样的数组:
a:1:{i:0;s:4:"Dads";}
在我的问题排查中,如果我更改了'%爸爸%'%',那么搜索只会产生正确的结果。到了爸爸'并将:1:{i:0; s:4:" Dads&#34 ;;}在MySQL中改为:Dads