簡體   English   中英

PHP PDO Prepared 語句綁定 NULL 值

[英]PHP PDO Prepared statement bind NULL value

我正在嘗試將 SQL 查詢作為准備好的語句運行 - 我嘗試綁定一個NULL值。 嗯,我已經在網上做了一些研究,是的,我已經在 stackoverflow 上找到了所有已知的主題。

到目前為止我的代碼:

$stmt = $db->prepare("SELECT c.*, COUNT(d.servername) as servercount, d.controller FROM customers C JOIN customerdata d ON c.id = d.customer WHERE isVdi = :isVdi AND d.controller = :controller GROUP BY d.customer ORDER BY c.name ASC, c.environment ASC");
            $stmt->bindValue(':isVdi', $isVdi);
            $stmt->bindValue(':controller', null, PDO::PARAM_INT);
            $stmt->execute();
            return $stmt->fetchAll();

但這不起作用。 我得到一個空的結果數組。 當我用controller IS NULL替換controller = :controller ,它工作得很好。

最后,我想將參數綁定到 :controller 上的變量,但現在我正在嘗試直接將 NULL 寫入其中,因為這甚至不起作用。

我在這里找到了這種方式: How do I insert NULL values using PDO?

我也已經嘗試過PDO::PARAM_NULL和所有這些東西 - 沒有任何效果。 我真的不明白。

感謝任何幫助。

這是您的查詢:

SELECT c.*, COUNT(d.servername) as servercount, d.controller
FROM customers C JOIN
     customerdata d
     ON c.id = d.customer
WHERE isVdi = :isVdi AND d.controller = :controller
GROUP BY d.customer
ORDER BY c.name ASC, c.environment ASC;

不幸的是,任何= NULL永遠不會返回 true。 更不幸的是,MySQL 不支持 ANSI 標准NULL比較器is not distinct from . 但令人高興的是,它有另一種選擇。 你可以試試這個:

SELECT c.*, COUNT(d.servername) as servercount, d.controller
FROM customers C JOIN
     customerdata d
     ON c.id = d.customer
WHERE isVdi = :isVdi AND
      d.controller <=> :controller
GROUP BY d.customer
ORDER BY c.name ASC, c.environment ASC;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM