2 回答

TA貢獻1898條經驗 獲得超8個贊
您不需要SET最后兩個值
$query = "
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 !=null then '{$post_author}' else null end,
post_user = case when post_user !=null then '{$post_user}' else null end
WHERE post_id = $the_great_post_id ";
無論如何,你不應該在 SQL 中使用 PHP 變量,這樣做會使你面臨 SQL 注入的風險。為避免這種情況,您應該查看 PHP 數據庫驅動程序的準備語句和綁定參數。

TA貢獻1884條經驗 獲得超4個贊
當你有
SET post_author = case when post_author !=null then '{$post_author}'
else null end,
有幾個問題,首先你不需要SET. 其次,usingelse 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
另一件需要指出的事情是,您應該使用準備好的語句,因為這是不安全的,并且可能會出現各種問題。
- 2 回答
- 0 關注
- 239 瀏覽
添加回答
舉報