我花了太多时间尝试将空值传递给数据库中的空列,我谷歌它的所有解决方案都不适用于我的代码 它给了我这个错误:
SQLSTATE[22007]:无效的日期时间格式:1292 日期值不正确: "表示第 2 行"实施日期"列
以下是更新表的查询:
<?php
function updateDates($ApplicationID , $DateOfImplementation , $DueDate ,$FinanceDeliveryDate ,$FinanceReceiptDate){
try {
$dbc = new db();
$dbhc = $dbc->connect();
$sql = "UPDATE `applicationstudy` SET
`DateOfImplementation` = '$DateOfImplementation',
`DueDate` = '$DueDate',
`FinanceDeliveryDate` = '$FinanceDeliveryDate',
`FinanceReceiptDate` = '$FinanceReceiptDate'
WHERE `ApplicationID` = '$ApplicationID' ;";
if( $dbhc->exec( $sql ) ) {
return true;
}
else {
return false;
}
$dbhc = null;
} catch(PDOException $e) {
echo $e->getMessage();
}
}
?>
这是插入日期的帖子:
<?php
if ( isset( $_POST["applicationid"] ) ) {
$applicationid = $helperObj->prepar_data( $_POST["applicationid"] );
}
if( ! is_null( $_POST["FinanceDeliveryDate"] ) ) {
$FinanceDeliveryDate = $helperObj->prepar_data( $_POST["FinanceDeliveryDate"] );
} else {
$FinanceDeliveryDate = 'NULL';
}
if( ! is_null( $_POST["FinanceReceiptDate"] ) ) {
$FinanceReceiptDate = $helperObj->prepar_data( $_POST["FinanceReceiptDate"] );
} else {
$FinanceReceiptDateFil= 'NULL';
}
if( ! is_null( $_POST["DueDate"] ) ) {
$DateOfFirstInstallment = $helperObj->prepar_data( $_POST["DueDate"] );
} else {
$DateOfFirstInstallment ='NULL';
}
if( ! is_null( $_POST["DateOfImplementation"] ) ) {
$DateOfImplementation = $helperObj->prepar_data( $_POST["DateOfImplementation"] );
} else {
$DateOfImplementation = 'NULL';
}
$status = $appstudyobj->updateDates( $applicationid , $DateOfImplementation , $DateOfFirstInstallment ,$FinanceDeliveryDate ,$FinanceReceiptDate );
?>
如何插入空值,如果函数中没有单引号,它可以工作,但如果有日期,则值不正确
php 不会将null
转换为NULL
若要解决此问题,请在执行查询之前检查空值。
使用 "NULL"
而不是 null。
你应该使用预准备语句插入空值 Eg。
//Testing
$DateOfImplementation = null;
$FinanceDeliveryDate = null;
$stmt = $dbhc-> prepare("UPDATE `applicationstudy` SET
`DateOfImplementation` = ?,
`DueDate` = ?,
`FinanceDeliveryDate` = ?,
`FinanceReceiptDate` = ?
WHERE `ApplicationID` = ?")
$stmt->bind_param('sssss', $DateOfImplementation, $DueDate, $FinanceDeliveryDate, $FinanceReceiptDate, $ApplicationID)
$stmt->execute()
引用自 PHP/MySQL Insert null values & PHP UPDATE 准备语句
$sql = "UPDATE `applicationstudy` SET
`DateOfImplementation` = '$DateOfImplementation',
`DueDate` = '$DueDate',
`FinanceDeliveryDate` = '$FinanceDeliveryDate',
`FinanceReceiptDate` = '$FinanceReceiptDate'
WHERE `ApplicationID` = '$ApplicationID' ;";
你在这里做了一个类型";"不应该在"$ApplicationID"之后。
而且,您不应该在引号下传递 NULL。尝试不带引号,即 NULL 而不是"NULL"。希望这有帮助!!