我有一列數列和它們的值由用戶選擇。我需要根據這些列和值執行搜索。如何在選擇查詢中implode列及其值?
例如,用戶選擇:
上午(列)=>週四,太陽(值)
下午(列)=> SAT(價值觀)
現在,我該如何搜索與列和值匹配的記錄?我正在使用PDO。
數組:
//列
var_dump($cols);
array (size=3)
0 => string 'morning' (length=7)
1 => string 'morning' (length=7)
2 => string 'afternoon' (length=9)
var_dump($days);
//值存儲在數據庫中,對於record.So
array (size=3)
0 => string 'Thrs' (length=4)
1 => string 'Sun' (length=3)
2 => string 'Sat' (length=3)
樣品列和價值觀,我想用以上日期和列作爲搜索條件。
在下面的記錄,此用戶具有
'morning' => string 'Thrs'
'afternoon' => string 'Fri,Sat'
'evening' => ''
早晨我的搜索條件是,週四和週日但是這個用戶只能在週四早上使用。符合SO 1標準。
下一個下午,此用戶在星期五,星期六可用。我的搜索只需要週六。由於滿足了任何一個,因此符合這個標準。
但讓我說我的搜索標準只是晚上而不是早上和下午。那麼這個用戶將不會被選中,因爲他/她在晚上不可用。
希望你明白它是怎麼回事..如果不是隨便問。謝謝。
array (size=1)
0 =>
array (size=25)
'postUUID' => string '5623853773026' (length=13)
'subid' => string '36' (length=2)
'subname' => string 'Muay Thai' (length=9)
'catID' => string '4' (length=1)
'catname' => string 'Martial Arts' (length=12)
'pricing' => string '200' (length=3)
'post_status' => string '0' (length=1)
'UUID' => string '562385374bddf' (length=13)
'Name' => string 'Kalaivani Nair' (length=14)
'Phone' => string '' (length=9)
'Email' => string '[email protected]' (length=23)
'location' => string 'kajang' (length=6)
'lat' => string '2.993518' (length=8)
'lon' => string '101.7874058' (length=11)
'DateReg' => string '2015-10-18 19:40:39' (length=19)
'Reputation' => string '0' (length=1)
'ReviewPlus' => string '' (length=0)
'ReviewNeg' => string '' (length=0)
'Sex' => string 'f' (length=1)
'centre' => string '0' (length=1)
'morning' => string 'Thrs' (length=4)
'afternoon' => string 'Fri,Sat' (length=7)
'evening' => string '' (length=0)
'catid' => string '4' (length=1)
'distance' => string '0' (length=1)
編輯根據史蒂夫的回答
"avail":["Wed-2","Wed-3"]//JSON string
$data = json_decode($return, true);//decoded
$avail = $data['avail'];//stored into database
if($avail != ""){
foreach($avail as $k=>$v)
{
echo $v;
$array = explode('-', $v);
$day =$array[0]; // Languages
$column = $array[1]; // English
echo"<br/>";
if($column == 1)
{
$col = "morning";
}
if($column == 2)
{
$col = "afternoon";
}
if($column == 3)
{
$col = "evening";
}
echo $col ."=>". $day;
echo $sql=" SELECT * , (3956 * 2 * ASIN(SQRT(POWER(SIN(('$lat' - lat) * pi()/180/2), 2) +COS('$lat' * pi()/180) * COS(lat * pi()/180) * POWER(SIN(('$lon' - lon) * pi()/180/2), 2)))) as distance
from posts,subjects WHERE ('posts.".$col."' LIKE '%".$day."%') AND posts.catID = '$catid' AND posts.subname LIKE '%$subject%' AND posts.subid = subjects.subid AND posts.catID = subjects.catid AND posts.pricing <= '$rate' having distance <= '$distance' order by distance ";
echo"<br/>";
// array_push($cols,$col);
// array_push($days,$day);
}
}
$stmt =connection::$pdo->prepare($sql);
$stmt->execute();
$place=array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$place[] = $row;
}
如果你不介意你可以檢查我的文章中編輯的部分?我剛剛根據你的回答進行了更新。但是由於我使用用戶的價值,我錯過了OR。那裏;在上面沒有錯誤,但返回空陣列。你能幫我理解這個please.Thanks – 112233
你有撇號,而不是反引號的'職位。「。$ col。」'。刪除它們或在表名和列名周圍使用反勾號。另外請看[SQL錯誤處理](http://php.net/manual/en/pdo.errorinfo.php),總是檢查並處理錯誤,從長遠來看,它會節省大量時間。 –