Хорошо, это "ответ", а не симпатичный, в зависимости от предоставленного вами кода / проблемы.
Лично я бы не стал так кодировать, но мы не можем дать здесь уроки. Это больше демонстрация того, как go проработать что-либо без промежуточных битов.
Это пример. Тестовый код (то, что мы должны научиться писать), я использовал для проверки получения правильных SQL операторов.
<code>function test_datetime_sql()
{
$_POST['datetime1'] = '';
$_POST['datetime2'] = '2020-04-17 11:06:00';
// There must be a more elegant way to do this
$datetime1 = $_POST['datetime1']?"'".$_POST['datetime1']."'":'NULL';
$datetime2 = $_POST['datetime2']?"'".$_POST['datetime2']."'":'NULL';
echo '<pre>';
echo 'LINE: '. __LINE__. ' Module '.__CLASS__.'<br>';
var_dump($datetime1);
echo '
'; echo '
';
echo 'LINE: '. __LINE__. ' Module '.__CLASS__.'<br>';
var_dump($datetime2);
echo '
'; $ id = 5; $ sql = "ОБНОВЛЕНИЕ таблицы SET SET datetime1 = $ datetime1, datetime2 = $ datetime2, WHERE id = $ id"; var_dump ($ sql); // Что SQL мы получаем}
Сделайте попытку, сгенерировав SQL и протестировав его.
Обратите внимание, что это изменение на троичный И оператор SQL - обратите внимание на отсутствие '' в $sql
для datetime1 и datetime2, поскольку они генерируются в троичной форме.
Что здесь происходит, если это "Не Пустое значение, оно заключено в '', чтобы сделать его строкой. То же самое происходит с NULL
Я настоятельно рекомендую вам скопировать и вставить это куда-нибудь и поиграть с ним, чтобы посмотреть, что произойдет.
В исходном коде, когда вы устанавливаете $datetime1
как NULL, оно появляется в вашем SQL как $datetime1 = ''
, а НЕ как $datetime1 = NULL
(не строка 'NULL').