gpt4 book ai didi

php - 更新两个或多个表

转载 作者:行者123 更新时间:2023-11-30 22:15:15 25 4
gpt4 key购买 nike

我有三个表。
第一个表是 tbl_user

id  u_name  p_list1   demo1   1,3,2   demo2   4,3,1,3   demo3   2,3,4   demo4   2,5, 

Second table is tbl_product

id  product_name1   example12   example23   example34   example45   example5
third table is tbl_order_list that show the list of order to the users. tbl look like
id  pid  uid1   1    1,2,2   4    2,3   3    1,2,3,4   5    4,
now i want if i'll update tbl user means if i'll remove pid of column p_list of tbl_user than tbl_user will be updated and also tbl_order_list is update

"Example" if i'll remove 3 in p_list of id 2 from tbl_user than table is look like

id  u_name  p_list1   demo1   1,3,2   demo2   4,1,  //(pid =3 is remove of demo2)3   demo3   2,3,4   demo4   2,5,
And tbl_order_list is look like
id  pid  uid1   1    1,2,2   4    2,3   3    1,3, //(uid =2 is remove)4   5    4,

what is the solution of this problem. i want also if i'll add again pid = 3 in p_list of id = 2 of table user than table look like previous tables.

QUERY (From Comments)

mysql_query("UPDATE tbl_user SET u_name='$userName',slug='$userSlug',password='$userPassword',email='$use‌​rEmail',role='$userRole',p_list='$userList',status='$userStatus',modified_‌​date='$userDate' WHERE id='$uId'");

帮帮我

最佳答案

到目前为止,我没有看到与 php 有任何真正的相关性,但无论如何。

我会极力建议使用正常形式(请参阅数据库规范化)并对数据进行重复数据删除。 tbl_order_list 是一个非常糟糕的表,tbl_user 也是如此。 tbl_order_list 不应该有一个 id 字段,uid 字段应该只包含一个 uid 并且主键应该是 (pid,uid)(所以两个字段)。到那时它应该被称为 tbl_order。如果你想要一个 uid 的所有 pid 或一个 pid 的所有 uid 的列表 - 在某些时候 - 你可以这样查询:

SELECT GROUP_CONCAT(uid) 
FROM tbl_order
WHERE pid=[your pid of interest]
GROUP BY pid

反之亦然(将 uid 替换为 pid,将 pid 替换为 uid)。如果您想与其余用户数据同时查询:

SELECT u.*, GROUP_CONCAT(o.pid)
FROM tbl_user u
LEFT JOIN tbl_order o ON (u.id=o.uid)
[WHERE u.id=[your uid of interest]]
GROUP BY u.id

(与 tbl_product 类似)。

当使用 mysql >= 5.7 时你可以创建一个 View :

CREATE VIEW tbl_order_list AS SELECT pid, GROUP_CONCAT(uid) FROM tbl_order GROUP BY pid. 

然后添加或删除订单将导致在 tbl_order 中删除/插入一行。

总结:创建一个表tbl_order (uid,pid),其中包含uid 和pids 之间的链接(每行一个链接)。当您需要链接时加入此表。 除非有非常非常好的理由,否则不要将“引用”保存为字符串字段中的逗号分隔列表。

如果您实际上有一个非常非常好的理由,请考虑在列表的开头和结尾添加逗号 (,),意思是。所以:

id  pid  uid
1 1 ,1,2,
2 4 ,2,
3 3 ,1,2,3,
4 5 ,4,

这样您就可以安全地搜索、添加、删除条目:

SELECT * FROM tbl_order_list WHERE uid LIKE '%,[uid of interest],%'
UPDATE tbl_order_list SET uid=CONCAT(uid,',',[uid to add]) WHERE id=[order to update]
UPDATE tbl_order_list SET uid=REPLACE(",[uid to remove],",",",uid) WHERE id=[order to update]

(与您的 tbl_user 类似,如果您在 tbl_order 列表中通过 pid 进行查询,请删除 id 字段。)

如果您不在前面加上逗号,您可能会在某些时候遇到一些一致性问题。

无论如何,我对此强调不够:规范化你的数据库结构,除非你有很好的理由不这样做(并且绝对确定,它们确实是很好的理由,因为通常它们不是)

关于php - 更新两个或多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38525036/

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