我有一个带有开始日期和结束日期的表格,因此可能需要开始日期,但是在项目结束之前,结束日期可以留为空白。
在phymyadmin中,我具有字段finish_date,设置为NULL =是,默认值为NULL。根据已阅读的内容,我现在应该能够将finish_date设置为null来更新表。
这是设置POST值的代码。如果日期无效,则将其设置为NULL。
if (validDate($_POST['finish_date'], $format = 'Y-m-d')){
$finish_date = date('Y-m-d', strtotime(trim($_POST['finish_date'])));
} else {
$finish_date = NULL;
}
正如您所见,这是我提交时遇到的错误,而不是NULL finish_date =“”
UPDATE projects
SET title='Love show me how', project_status='Melody Idea', bpm='144', genre='New Age', release_genre='99',
vocals='1', lyrics_written='0', voice_of='', start_date='2018-11-11', finish_date='',
project_time='1hr 30 min', file_name='love show me how', mixed='0', mastered='0', mixed_by='Norman Love',
mastered_by='', loudness_level='', release_date='1969-12-31', artwork_link='',
audio_link='', length='', lyrics_link='', priority='7', notes='try and get to this one, has something', lyrics='Mostly completed
uplifting, inspirational',
project_key='',featuring='', producers='' WHERE id='17 '
LIMIT 1
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '' for column 'finish_date' at row 1
我似乎无法弄清楚。这里有很多问题类似的帖子,但是我尝试了所有解决方案,但似乎都没有。我似乎在做什么是正确的,应该可以工作。
更新:否,我的问题与空VS“”问题不同。我的问题是由于未使用准备好的语句引起的。显然,PDO处理NULL值到MYSQL的方式有所不同,这取决于您是否使用“ prepared”。使用它们解决了我的问题。