绑定后如何将 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
. . .

但是,索引不能用于此功能。