使用数组 PHP 在 SQL 数据库中搜索
Search in SQL database using array PHP
$value = array('one', 'two', 'three');
我有那部分查询:
$features_filter .= $this->db->placehold('AND p.id in (SELECT product_id FROM __options WHERE feature_id=? AND value in (?@) ) ', $feature, $value);
仅当数据库包含值 == 'one' 或 'two' 或 'three' 时,该查询 returns 才会产生结果。
我如何更改我的查询以执行该查询返回一些 LIKE 'one' 或 'two' 或 'three'?
PS对不起我的英语不好
这是一个快速而肮脏的解决方案:
$value = array('one', 'two', 'three');
for ($i = 0; $i < sizeof($value); $i++ ):
$new .= " LIKE '%$value[$i]%'";
if ( $i < sizeof($value) -1 ) :
$new .= " OR";
endif;
endfor;
$features_filter .= $this->db->placehold('AND p.id in (SELECT product_id FROM __options WHERE feature_id=? AND value ' . $new ) ', $feature );
添加: 在 PHP >= 5.3 上,for
循环也可以替换为以下代码:
array_walk( $value, function (&$value, $key) {
$value = " LIKE %$value%";
});
$new = implode(' OR', $value );
$value = array('one', 'two', 'three');
我有那部分查询:
$features_filter .= $this->db->placehold('AND p.id in (SELECT product_id FROM __options WHERE feature_id=? AND value in (?@) ) ', $feature, $value);
仅当数据库包含值 == 'one' 或 'two' 或 'three' 时,该查询 returns 才会产生结果。 我如何更改我的查询以执行该查询返回一些 LIKE 'one' 或 'two' 或 'three'?
PS对不起我的英语不好
这是一个快速而肮脏的解决方案:
$value = array('one', 'two', 'three');
for ($i = 0; $i < sizeof($value); $i++ ):
$new .= " LIKE '%$value[$i]%'";
if ( $i < sizeof($value) -1 ) :
$new .= " OR";
endif;
endfor;
$features_filter .= $this->db->placehold('AND p.id in (SELECT product_id FROM __options WHERE feature_id=? AND value ' . $new ) ', $feature );
添加: 在 PHP >= 5.3 上,for
循环也可以替换为以下代码:
array_walk( $value, function (&$value, $key) {
$value = " LIKE %$value%";
});
$new = implode(' OR', $value );