如何使用php将一个值推送到mysql表的现有数组中

fykwrbwg  于 2023-01-01  发布在  PHP
关注(0)|答案(2)|浏览(134)

我有一个列名为“access”的表,其中包含数组值[2,3,4]。现在我想在数组的最后一部分推送一个值。如果我的值是“7”,那么推送后的数组应该是[2,3,4,7]
这是访问栏。

我使用了此方法,但我知道它不会发生,因为它会删除所有现有值

$id = '7'
UPDATE user SET access = '$id' WHERE name = '$user'
3mpgtkmj

3mpgtkmj1#

将逗号分隔的值放入SQL列是对SQL的误用,这就是为什么您找不到任何干净的方法来执行此操作的原因。
如果你一定要这样做,试试这个。

UPDATE user SET access = CASE 
         WHEN access IS NULL OR access = '' THEN $id
         WHEN FIND_IN_SET($id,access) IS NOT NULL THEN access
         ELSE CONCAT_WS(',',access,$id) END
 WHERE whatever;

第一个WHEN处理access不包含任何内容的情况,第二个处理$id值已经在access中的情况,ELSE附加$id值。
但是如果可以的话,用SQL的方式来做。试着创建一个单独的表user_access。给予它一个user和一个access列。然后向表中插入一行来添加一个$id,删除一行来删除。为什么?access $id值和用户之间有一个多::一关系,这是通过表来完成的。

c6ubokkw

c6ubokkw2#

可以在MySQL UPDATE语句中使用array_push()函数。

$id = '7';

$sql = "UPDATE user SET access = array_push(access, '$id') WHERE name = '$user'";

相关问题