我制作了一些用于檢索資料的功能。
查詢結果必須取決于輸入值。輸入值在變數中$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(*)
");
那么錯誤是什么,如何使用變數?
uj5u.com熱心網友回復:
您的變數$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]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/463161.html
