在這種情況下,查詢參數「style」是一個數組,必須用方括號標識 - 如果不是,最後一個key = value對將會o寫其他人。
?style[]=ranch&style[]=barn&style[]=colonial
$_GET['style']
是一個數組,那麼你可以遍歷使用foreach
:
foreach ($_GET['style'] as $value) {
// ...
}
如果「風格」是不是你要添加的唯一參數,你可以在foreach
使用is_array()
檢查循環:
foreach ($_GET as $key => $value) {
if ($i == 1){
$sqlStyle .= "where ";
}else{
$sqlStyle .= " and ";
}
if(is_array($value)) {
$sec = array();
foreach($value as $second_level) {
$sec[] = $key . " LIKE '%" . $second_level."%'";
}
$sqlStyle .= implode(' AND ', $sec);
}
else {
$sqlStyle .= $key . " LIKE '%" . $value ."%'";
}
$i++;
}
echo $sqlStyle;
替代而不的foreach:
<?php
$statement = "SELECT DISTINCT COUNT(*) as count FROM `houses_single`";
if(is_array($_GET)) {
$statement .= ' WHERE';
// create copy to keep the $_GET array
$add_where = $_GET;
array_walk(function($elem,$key){
is_array($elem) {
return implode(' AND ', array_map(function($sec) using ($key) {
return "$key LIKE '%$sec%'";
}, $elem);
}
else {
return "$key LIKE '%$elem%'";
}
},$add_where);
$statement .= implode(' AND ', $add_where);
}
(代碼是未經測試)
Sidenode關於安全:我希望你不會使用該代碼段您在生產環境,而參數的任何轉義提供。
風格需要是您的HTML表單中的一個數組以傳遞多個值與鍵風格 – 2013-03-03 00:41:45
房子可以是牧場和穀倉和殖民地? – James 2013-03-03 01:02:58