我正在使用此代码将我的数据时间字段更新为 NULL, PHP版本7.3.7
if($_POST['value']=='0000-00-00 00:00:00'){
$timestamp=NULL;
}else {
$dateTime = $_POST['value'];
$timestamp = date('Y-m-d H:i', strtotime($_POST['value']));
}
$query="update forms set $_POST[limitInputField]='$timestamp' where formid='$_POST[formId]'";
$result=$dbCnn->query($query)or die($dbCnn->error);
当 $timestamp 为 null 时会出错:
Incorrect datetime value: '' for column farsifor_m.forms.enddate at row 1
但是当我引用“NULL”并删除查询中 $timestamp 周围的引号时,如果 $timestamp 为 null 可以正常工作,但如果 $timestamp 值不为 null,则会出现错误。
if($_POST['value']=='0000-00-00 00:00:00'){
$timestamp="NULL";
}else {
$dateTime = $_POST['value'];
$timestamp = date('Y-m-d H:i', strtotime($_POST['value']));
}
$query="update forms set $_POST[limitInputField]=$timestamp where formid='$_POST[formId]'";
$result=$dbCnn->query($query)or die($dbCnn->error);
最佳答案
学习使用准备好的语句;并且不要注入(inject)后变量来“构建”查询。话虽如此:
您可以使用NULLIF
为了方便。在以下示例中,特定值 0000-00-00 00:00:00
将转换为 NULL:
UPDATE forms SET col = NULLIF(:timestamp, '0000-00-00 00:00:00') WHERE formid = :formid
或者您可以简单地:
UPDATE forms SET col = :timestamp WHERE formid = :formid
并使用PHP传递包含字符串或null
的变量.
关于php - 通过php在mysql中用空值更新日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57774251/