The problem is this second line
 $stmt = $this->prepareAndBind($query, $searchParams); 
 $stmt->execute();                                                                    //line 384
$searchParams[] is empty. 
$stmt is false because that is being returned by prepareAndBind(). I think it should be a structure. Is this a known bug? 
$stmt = $this->connection->prepare($query);
Here is the value of query that is causing prepare() to fail. 
    SELECT e.employee, e.employee_title, e.w2_wages as wages,  t.risk, 
         CASE 
             WHEN risk='low' THEN  e.w2_wages
             WHEN risk='medium' THEN  e.w2_wages*.5
             ELSE 0
          END as QREs 
    FROM employees as e, titles as t
    WHERE e.email='richb201@gmail.com' AND e.campaign= 'Apple'  
    AND t.email='richb201@gmail.com' AND t.campaign= 'Apple' 
    AND e.employee_title=t.title
    ORDER BY e.employee
    
Is it possible that the query is just too long? I think that this query was working a day or two ago. Please advise?