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 关注
- 189 浏览
添加回答
举报