【发布时间】:2018-04-06 09:47:46
【问题描述】:
我花了太多时间试图将 null 值传递给数据库中的 null 列,而我在谷歌上搜索的所有解决方案都不适用于我的代码 它给了我这个错误:
SQLSTATE[22007]:日期时间格式无效:1292 日期值不正确: '' 用于第 2 行的列 'DateOfImplementation'
这是更新表的查询:
<?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 );
?>
如果函数中没有单引号,我如何插入空值它可以工作,但如果有日期,则不采用正确的值
【问题讨论】:
-
如果您的列默认为空,只需在插入语句中跳过它们
-
如果你已经在 mysql 中将该字段定义为日期字段,则只能从 PHP 中提供日期(字符串)。它适用于单引号
'NULLL',因为这是(string) Null -
我不能在插入中跳过它们,因为他更新了太多提交的日期,所以我必须将它们留在同一个语句中@LelioFaieta
-
@RaheelKhan 那么如何解决它
-
@LelioFaieta 说的是正确的方法!当您考虑
NULL与"NULL"相同时,您的方法是错误的。如果我愿意,我真的不想将其保留为NULL,我会将日期传递为 00:00:00 以区分。
标签: php mysql database post null