Php 如何使用空值进行更新

Php 如何使用空值进行更新,php,Php,我正在尝试更新mysql表。如果没有值,我希望为null,但如果$ODate为空,则得到0。实际上我得到了0000-00-00。我需要做的是去掉“”然后它将接受NULL值,但是如果存在有效的日期值,它将不起作用 if (($_POST['OrderDate'])==null){$ODate='NULL';}else {$ODate=$_POST['OrderDate'];} //这将更新有效日期,但如果设置为NULL,则返回0000-00-00 "UPDATE tblLoads SET Ord

我正在尝试更新mysql表。如果没有值,我希望为null,但如果$ODate为空,则得到0。实际上我得到了0000-00-00。我需要做的是去掉“”然后它将接受NULL值,但是如果存在有效的日期值,它将不起作用

if (($_POST['OrderDate'])==null){$ODate='NULL';}else {$ODate=$_POST['OrderDate'];}
//这将更新有效日期,但如果设置为NULL,则返回0000-00-00

"UPDATE tblLoads SET OrderDate = '$ODate',
//这将更新NULL,但如果是有效日期,则返回0000-00-00

"UPDATE tblLoads SET OrderDate = $ODate,

您可以使用if-else,检查
$ODate
是否为空,如果为空,则不使用引号,如果不为空,则使用引号

e、 g


你考虑过使用prepared statements/pdo/mysqli吗?我可能需要了解它们,我对它们根本没有经验。它将允许null,默认值为null。通过删除$ODate附近的“”可以将其更新为空值,但实际日期不起作用。这就是为什么我建议如果$ODate值中有日期,请将其括在引号中,否则请取消引号。编辑以显示示例。如果日期字段为空,则返回0000-00-00。如果日期字段为空/空,则返回0000-00-00。在编辑问题之前,我写下了我的答案,以显示如何设置
$ODate
,我以为您想使用
null
。我已经对它进行了更新,展示了如何使用
$\u POST
数据进行操作。感谢Barmar的帮助。我应该更清楚日期是从哪里来的。
if (!is_null($ODate)) {
  $ODate = "'" . $ODate . "'";
}

"UPDATE tblLoads SET OrderDate = $ODate,
$ODate = empty($_POST['OrderDate']) ? "NULL" : "'$_POST[OrderDate]'";

$query = "UPDATE tblLoads SET OrderDate = $ODate, ...";