![](/img/trans.png)
[英]i am trying to bind array value a prepared statement in php pdo but only the first element of the array that is bind
[英]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.