如何将空值传递给具有 php 日期类型的数据库 mysql



我花了太多时间尝试将空值传递给数据库中的空列,我谷歌它的所有解决方案都不适用于我的代码 它给了我这个错误:

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"。希望这有帮助!!

相关内容

  • 没有找到相关文章

最新更新