This is my construct query, i need to filter data based on fromdate and todate,and also based on adminid, whats wrong am i doing here,is there any other way?
function constructFilterQueryrelogin($paymentStatusCode, $appCode,$adminId,$fromDateId,$toDateId){ $query = ""; // From To Date Query for Updation Date $currentDateTime = date('Y-m-d H:i:s', time()); $fromDateId = date('Y-m-d H:i:s', strtotime('0 days', strtotime($fromDateId))); $toDateId = date('Y-m-d H:i:s', strtotime('+ 1 days', strtotime($toDateId))); if(($_POST['fromDateId'] && $_POST['toDateId']) != ''){ $query = "Login_Date >= '".$fromDateId."' AND Login_Date <= '".$toDateId."' "; } else{ $query = "Login_Date <= '".$currentDateTime."' "; } //get data based on executive_Id if($_POST['adminId'] != ''){ $query = " Executive_Id = '".$_POST['adminId']."' "; } else{ $query = "Null"; } //Apps Filter Query if($_POST['appCode'] != ""){ switch($_POST['appCode']){ case 1: $query .= " AND App_Id LIKE '%".$_POST['appCode']."%' "; break; default: $query .= " AND App_Id LIKE '%".$_POST['appCode']."%' "; } } // $filterApps = ($_GET['appCode'] != "") ? ' Where `App_Id` = '.$_GET['appCode'].' ' : ""; //Payment Status Query $currentDateTime = date('Y-m-d H:i:s', time()); $expiringTimeLimit = date('Y-m-d H:i:s', strtotime('+ 30 days', strtotime($currentDateTime))); switch($paymentStatusCode){ case 1: $query .= " AND Max_Sub_End_Timestamp IS NULL "; break; case 2: $query .= " AND Max_Sub_End_Timestamp <= '".$currentDateTime."' "; break; case 3: $query .= " AND Max_Sub_End_Timestamp > '".$currentDateTime."' AND Max_Sub_End_Timestamp <= '".$expiringTimeLimit."' "; break; case 4: $query .= " AND Max_Sub_End_Timestamp > '".$expiringTimeLimit."' "; break; default: $query .= ""; } return $query; }
Advertisement
Answer
You’re not concatenating. You forgot the ‘.’. There is also no need to append the ‘NULL’. If you don’t want to do anything with executive_id, then don’t add anything to the constructed query.