我想動態地插入'NULL'到數據庫使用PDO。調試PDO mySql插入NULL到數據庫而不是空
表結構:
CREATE TABLE IF NOT EXISTS `Fixes` (
`Id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'PK',
`CurrencyId` int(11) NOT NULL COMMENT 'FK',
`MetalId` int(11) NOT NULL COMMENT 'FK',
`FixAM` decimal(10,5) NOT NULL,
`FixPM` decimal(10,5) DEFAULT NULL,
`TimeStamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`Id`),
KEY `CurrencyId` (`CurrencyId`),
KEY `MetalId` (`MetalId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=13 ;
PHP/PDO QUERY:
$sql = 'UPDATE
Fixes
SET
FixAM = :fixAM,
FixPM = :fixPM
WHERE
MetalId IN (SELECT Id FROM Metals WHERE Name = :metal) AND
CurrencyId IN (SELECT Id FROM Currencies Where Id = :currency)';
$stmt = $db->prepare($sql);
for ($i = 0; $i<3; $i++) {
$stmt->execute(array(
':metal' => 'Silver',
':fixAM' => $fix['FixAM'][$i],
':fixPM' => $fix['FixPM'][$i],
':currency' => ($i+1))
);
}
例如有時,$fix['FixPM'][$i]
的值爲有時'NULL'。我如何將其插入數據庫?當我運行查詢並查看數據庫中的數據時,此記錄顯示0.0000,而不是空值。
How do I insert NULL values using PDO?提供了一些解決方案。
- 我不認爲我可以使用
$stmt->execute(array(':v1' => null, ':v2' => ...))
作爲示例,因爲有時項目爲空,有時不是。因此,我需要參考我創建$fix['FixPM'][$i]
變量並作出空的,需要提前
感謝時。
是在'Fixed'表架構'FixPM'場可爲空? – luchosrock
你好,我澄清了這個問題。表結構顯示FixPM可以爲空。 – Gravy
變量的值是否實際爲'NULL',或者是_string_''NULL'',當轉換爲數值時將轉換爲'0'? PDO應該正確處理一個真正的NULL,但是該字符串將被轉換。 –