codeigniter MySQL查询:SQL的变量值不起作用

6tqwzwtp  于 2022-12-07  发布在  Mysql
关注(0)|答案(1)|浏览(96)

我创建了一些用于检索数据的函数。
查询结果必须取决于输入值。输入值位于变量$start & $end中。
但是我的代码返回所有不基于输入值的数据。
这意味着变量$start & $end没有值(读取器为空)。

function tryme($start, $end) {

      $query = $this->db->query("
      SELECT b.liId, r.status
      FROM raws r
      LEFT JOIN books b ON r.rawsId = b.booksId
      GROUP BY b.booksId 
      HAVING 
       SUM((b.start < '$start' AND b.done < '$start') 
                   OR 
      (b.start > '$end' AND b.done > '$end')) = COUNT(*)
      ");

      return $query->result_array();
   }

然后我用固定值修改代码,结果如预期。

HAVING 
       SUM((b.start < '18-04-2022' AND b.done < '18-04-2022') 
                   OR 
      (b.start > '19-04-2022' AND b.done > '19-04-2022')) = COUNT(*)
      ");

那么究竟是什么错误,如何使用变量呢?

llycmphe

llycmphe1#

变量$start$end在查询字符串中没有展开。将查询字符串赋给变量并打印出来以进行确认。也就是说,使用绑定变量而不是插入字符串:

$query = $this->db->query("
          SELECT b.liId, r.status
          FROM raws r
          LEFT JOIN books b ON r.rawsId = b.booksId
          GROUP BY b.booksId 
          HAVING SUM((b.start < ? AND b.done < ?) OR
              (b.start > ? AND b.done > ?)) = COUNT(*)
      ", [$start, $start, $end, $end]);

相关问题