绑定后如何将 MySql 语句检索为字符串?
How can I retrieve a MySql statement as a string after binding?
我正在尝试调试不是我自己写的 SQL 语句:
$stmt = $dbh->prepare("
SELECT
Customer.Primary_Email AS EMAIL,
...
FROM Order_SG
INNER JOIN Customer USING (Customer__)
INNER JOIN Order_SG_Detail USING (Order_SG__)
INNER JOIN Product_Ref USING (Product_Ref__)
INNER JOIN Reduction USING (Reduction__)
WHERE Order_SG.Server__ IN (:servers)
...
AND `DATE` BETWEEN :startDate AND :endDate
LIMIT :limit
OFFSET :offset");
$stmt->bindValue(':servers', implode(',', $servers));
$stmt->bindValue(':startDate', $startDate);
$stmt->bindValue(':endDate', $endDate);
$stmt->bindValue(':limit', $limit, \PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, \PDO::PARAM_INT);
如何获取绑定后的语句?我可以 echo
的字符串很好。
in
语句将不起作用。一种方法是将列表直接包含在 SQL 中(令人讨厌,但这就是方法)。另一种是使用 find_in_set()
:
WHERE find_in_set(Order_SG.Server__, :servers) > 0 AND
. . .
但是,索引不能用于此功能。
我正在尝试调试不是我自己写的 SQL 语句:
$stmt = $dbh->prepare("
SELECT
Customer.Primary_Email AS EMAIL,
...
FROM Order_SG
INNER JOIN Customer USING (Customer__)
INNER JOIN Order_SG_Detail USING (Order_SG__)
INNER JOIN Product_Ref USING (Product_Ref__)
INNER JOIN Reduction USING (Reduction__)
WHERE Order_SG.Server__ IN (:servers)
...
AND `DATE` BETWEEN :startDate AND :endDate
LIMIT :limit
OFFSET :offset");
$stmt->bindValue(':servers', implode(',', $servers));
$stmt->bindValue(':startDate', $startDate);
$stmt->bindValue(':endDate', $endDate);
$stmt->bindValue(':limit', $limit, \PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, \PDO::PARAM_INT);
如何获取绑定后的语句?我可以 echo
的字符串很好。
in
语句将不起作用。一种方法是将列表直接包含在 SQL 中(令人讨厌,但这就是方法)。另一种是使用 find_in_set()
:
WHERE find_in_set(Order_SG.Server__, :servers) > 0 AND
. . .
但是,索引不能用于此功能。