Если у вас
SET post_author = case when post_author !=null then '{$post_author}'
else null end,
, есть несколько проблем, во-первых, вам не нужно SET
. Во-вторых, использование else null
установит значение в null вместо того, чтобы оставить поле с его исходным значением.
В этой версии он использует ...
post_author = case when post_author is null then '{$post_author}' else post_author end,
, что вместе дает вам ...
UPDATE posts
SET post_title = '{$post_title}',
post_tags= '{$post_tags}',
post_date = now(),
post_image = '{$post_image}',
post_content = '{$post_content}',
post_status = '{$post_status}',
post_category_id = '{$post_category_id}',
post_author = case when post_author is null then '{$post_author}' else post_author end,
post_user = case when post_user is null then '{$post_user}' else post_user end
WHERE post_id = $the_great_post_id
Другая вещь, на которую следует обратить внимание, это то, что вы следует использовать подготовленные операторы, поскольку это небезопасно и может разрешить любые проблемы.