Laravel - 参数号无效:参数未定义[命名参数错误]

时间:2017-07-10 08:23:04

标签: php mysql laravel pdo

我在查询中包含了所有命名参数,还处理了PDO文档中提到的命名参数规则(即不支持命名参数的可重用性)。它仍然给我错误,我无法找到错误。

some.Frob

1 个答案:

答案 0 :(得分:1)

您似乎错误地使用了您的命名参数。查看PDO::prepare文档,您会注意到参数名称周围的' NOT 。请尝试此查询:

$leaves = DB::select(
   "SELECT * 
    FROM leaves 
    WHERE emp_id=:emp_id AND status != 'Rejected' 
        AND (
           (STR_TO_DATE(from_date, '%Y-%m-%d') 
                BETWEEN :from_date1 AND :to_date1) 
           OR (STR_TO_DATE(to_date, '%Y-%m-%d') 
                BETWEEN :from_date2 AND :to_date2)
        ) 
        OR (
           (STR_TO_DATE(from_date, '%Y-%m-%d') <= :from_date3) 
           AND (STR_TO_DATE(to_date, '%Y-%m-%d') >= :to_date3)
        )",
      [
        'emp_id'=> (int)$request->emp_id, 'from_date1'=>$request->from_date, 
        'to_date1'=>$request->to_date, 'from_date2'=>$request->from_date, 
        'to_date2'=>$request->to_date, 'from_date3'=>$request->from_date, 
        'to_date3'=>$request->to_date
      ]);

基本上,包括参数名称周围的'使得驱动程序认为您在查询中使用了实际的varchar值。但是,在您的情况下,您正在尝试调用替换。