我很困惑如何在 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 循环生成波纹管动态部分:
( 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/