MySQL 查询:SQL 的变量值不起作用
MySQL query: variable value for SQL does not work
我做了一些检索数据的函数。
查询结果必须取决于输入值。
输入值在变量 $start & $end
.
中
但是我的代码returns所有数据都不基于输入值。
表示变量$start & $end
没有值(reader null)。
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();
}
然后我把代码改成fix值,果然不出所料
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(*)
");
那么哪里出错了,变量怎么用?
您的变量 $start
和 $end
没有在您的查询字符串中展开。将您的查询字符串分配给变量并打印出来进行确认。也就是说,使用 bind 变量而不是内插字符串:
$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]);
我做了一些检索数据的函数。
查询结果必须取决于输入值。
输入值在变量 $start & $end
.
但是我的代码returns所有数据都不基于输入值。
表示变量$start & $end
没有值(reader null)。
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();
}
然后我把代码改成fix值,果然不出所料
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(*)
");
那么哪里出错了,变量怎么用?
您的变量 $start
和 $end
没有在您的查询字符串中展开。将您的查询字符串分配给变量并打印出来进行确认。也就是说,使用 bind 变量而不是内插字符串:
$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]);