我不知道如何在MySQL查询中创建循环。
我有这样的疑问:
<?php
$arr = explode(',', $features);
$query_spicy = "
SELECT wposts.*
FROM $wpdb->posts wposts
INNER
JOIN ( SELECT post_id
FROM $wpdb->postmeta wpostmeta
WHERE (';
( wpostmeta.meta_key = 'features' AND wpostmeta.meta_value LIKE '%test1%' )
OR
( wpostmeta.meta_key = 'features'AND wpostmeta.meta_value LIKE '%test2%' )
OR
( wpostmeta.meta_key = 'features'AND wpostmeta.meta_value LIKE '%test3%' )
OR
( wpostmeta.meta_key = 'features'AND wpostmeta.meta_value LIKE '%test4%' )
OR
( wpostmeta.meta_key = 'features'AND wpostmeta.meta_value LIKE '%test5%' )
')
GROUP BY post_id
) AS t ON t.post_id = wposts.ID WHERE wposts.post_status = 'publish' AND wposts.post_type = 'book' ORDER BY wposts.post_date DESC";
?>
我想用for循环生成bellow部分动态:
( wpostmeta.meta_key = 'features' AND wpostmeta.meta_value LIKE '%test1%' ) OR
( wpostmeta.meta_key = 'features' AND wpostmeta.meta_value LIKE '%test2%' ) OR
( wpostmeta.meta_key = 'features' AND wpostmeta.meta_value LIKE '%test3%' ) OR
( wpostmeta.meta_key = 'features' AND wpostmeta.meta_value LIKE '%test4%' ) OR
( wpostmeta.meta_key = 'features' AND wpostmeta.meta_value LIKE '%test5%' )
注意:test1,test2,test3,test4和test5,我从这里得到
$arr
。我希望你能理解我的问题,如果你能帮助我,我将不胜感激。
谢谢:)
最佳答案
试试像这样的
$arr = explode(',', $features);
$conditions = array();
foreach($arr as $feature){
$condition[] = "( wpostmeta.meta_key = 'features' AND wpostmeta.meta_value LIKE '{$feature}' )";
}
$query = "SELECT ...". join("OR",$conditions);
但您可以简单地执行wpostmeta.meta_key='feature'和wpostmet IN($features)之类的操作
我认为第二种方法更好更快。
关于php - 如何在MySQL查询中编写PHP代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22193327/