gpt4 book ai didi

php - 如何更新MYSQL中的特定行

转载 作者:行者123 更新时间:2023-11-29 01:20:19 25 4
gpt4 key购买 nike

我有一张表,用于存储用户上传的文件。可以有 5 种不同的文件类型:个人资料图片、cpr 文件、学位文件、视频文件、背景调查文件。

表结构是这样的:

file_id, user_id, file_type, file_size, file_name, file_new_name, file_path, file_cat, date_created

我的问题:

  1. 这种结构是否有效,还是我应该创建 5 个不同的表?
  2. 如果我想更新,比方说用户个人资料图片行,那么最好的方法是什么? --- 我想出了一个可能不是最好的解决方案 - 我更新了 file_cat = "profile_picture"and user_id=:user_id 的行。这会给系统带来很大的负担吗?
  3. 首先,当用户注册时,他没有任何文件。我是否应该使用 insert into ... VALUES ... on duplicate key update 使用表单中的隐藏值?

提前谢谢你。

最佳答案

这是三个问题,而不是一个。

Is this structure efficient or should I create 5 different tables?

一张 table 就够了

If I would like to update, lets say user profile picture row, then what would be the best way to do it? --- I came up with a solution that probably is not be the best one- I update the row where file_cat = "profile_picture" and user_id=:user_id. Would that put a lot of load in the system?

如果您在 file_cat、user_id 上有索引(两个字段上的复合索引),则不会。如果你想让事情变得更精简,你可以存储常量而不是'profile_picture'等。例如

profile_picture = 1
cpr = 2
....
background = 6

这会使表和索引变小一些。它可能使查询稍微快一些。

First when user signs up, he doesn't have any files. Should I user insert into ... VALUES ... on duplicate key update with a hidden value in a form?

不需要那个。没有新用户的记录实际上使事情变得更容易。您可以执行 COUNT(*) = 0 查询或更好的 EXISTS 查询,而无需获取行并检查它们。

更新:这些 EXISTS 查询在处理 JOIN 或子查询时非常有用,例如可以快速查找用户是否上传了个人资料 picc

SELECT * from users WHERE exists (SELECT * from pictures where pictures.user_id = users.id)

关于php - 如何更新MYSQL中的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38481975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com