我正在尝试使用 php 格式化 mysql insert 语句,sprintf但这样做会插入 a0而不是NULL记录列。我正在寻找解决此问题的方法,同时仍在使用sprintf格式化:
$query = sprintf("INSERT INTO `efix_lines`
(EventID, Serial, SerialRequired, PartNumber,
MfgRev, DefectID, CircuitReference, CreatorID,
CreatorName, Created)
VALUES (%d, '%s', %d, '%s', '%s', %d, '%s', %d, '%s', '%s')",
$oSubmitData['EventID'],
EVL($oSubmitData['Serial'], NULL),
EVL($oSubmitData['SerialRequired'], NULL),
EVL($oSubmitData['PartNumber'], NULL),
EVL($oSubmitData['MfgRev'], NULL),
EVL($oSubmitData['DefectID'], NULL),
EVL($oSubmitData['CircuitReference'], NULL),
$oSubmitData['CreatorID'],
$oSubmitData['CreatorName'],
$pDate );
//I made this quick EVL function to help with shorthand ternary operators within my actual syntax
function EVL( $var1, $var2 ){
return ( empty( $var1 ) ? $var2 : $var1 );
};
DefectID尝试插入时出现问题,NULL因为它是空的。 sprintf想要插入一个整数作为%d指示,所以它插入0而不是NULL. 我能做些什么?