id u_name p_list 1 demo1 1,3, 2 demo2 4,3,1, 3 demo3 2,3, 4 demo4 2,5,
第二个表是tbl_product
id product_name 1 example1 2 example2 3 example3 4 example4 5 example5第三个表是tbl_order_list,它向用户显示订单列表。 tbl看起来像
id pid uid 1 1 1,2, 2 4 2, 3 3 1,2,3, 4 5 4,现在我想要 如果我将更新tbl用户意味着如果我将删除tbl_user的列p_list的pid而不是tbl_user将更新并且tbl_order_list更新
“示例”如果我将从tbl_user中删除id为2的p_list中的3而不是表格
id u_name p_list 1 demo1 1,3, 2 demo2 4,1, //(pid =3 is remove of demo2) 3 demo3 2,3, 4 demo4 2,5,并且tbl_order_list看起来像是
id pid uid 1 1 1,2, 2 4 2, 3 3 1,3, //(uid =2 is remove) 4 5 4,
这个问题的解决方案是什么。我也想要如果我再次在表用户的id = 2的p_list中添加pid = 3而不是像前面的表一样。
QUERY (来自评论)
mysql_query("UPDATE tbl_user SET u_name='$userName',slug='$userSlug',password='$userPassword',email='$userEmail',role='$userRole',p_list='$userList',status='$userStatus',modified_date='$userDate' WHERE id='$uId'");
帮帮我
答案 0 :(得分:0)
到目前为止,我没有看到与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
反之亦然(用pid替换uid,用uid替换pid)。如果您想与其余的userdata同时查询它:
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时,您可以创建一个视图:
CREATE VIEW tbl_order_list AS SELECT pid, GROUP_CONCAT(uid) FROM tbl_order GROUP BY pid.
添加或删除订单会导致在tbl_order中删除/插入行。
摘要:创建一个包含uids和pids之间链接的表tbl_order
(uid,pid)(每行一个链接)。当您需要链接时,请加入此表。 请不要保存"参考"作为字符串字段中以逗号分隔的列表,除非有非常非常好的理由。
如果您的理由非常充分,请考虑在列表的开头和结尾添加逗号(,
),这意味着。所以:
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字段。)
如果您没有添加逗号,可能会在某些时候出现一些问题。
无论如何,我不能强调这一点:规范化你的数据库结构,除非你有充分的理由不(并且绝对肯定,它们确实是很好的理由,因为通常它们不是)