Php 如何从MySQL列表中删除特定数字
我在MySQL条目“id\u user”中有一个逗号分隔的数字列表,如下所示:Php 如何从MySQL列表中删除特定数字,php,mysql,Php,Mysql,我在MySQL条目“id\u user”中有一个逗号分隔的数字列表,如下所示: 127,130,150,12,4,7,8,9 在这个以逗号分隔的列表中找到一个数字的最佳方法是什么?如果是其他数字,1用逗号将其删除;如果该数字本身类似于: 127 然后更新MySQL条目 因此,如果我想从列表中删除150,它将在MySQL中更新为: 127,130,12,4,7,8,9 我希望避免尝试删除id“12”,但最终删除127或512等数字中的“12” 谢谢大家! 使用PHP: $array = ex
127,130,150,12,4,7,8,9
在这个以逗号分隔的列表中找到一个数字的最佳方法是什么?如果是其他数字,1用逗号将其删除;如果该数字本身类似于:
127
然后更新MySQL条目
因此,如果我想从列表中删除150,它将在MySQL中更新为:
127,130,12,4,7,8,9
我希望避免尝试删除id“12”,但最终删除127或512等数字中的“12”
谢谢大家! 使用PHP:
$array = explode(',', $string);
$pos = array_search('127', $array);
unset($array[$pos]);
$string = implode(',', $array);
或者使用MySQL:
REPLACE(column, '127,', '')
REGEX_REPLACE(column, '127$', '')
使用PHP获取UDF正则表达式替换为^127$:
$array = explode(',', $string);
$pos = array_search('127', $array);
unset($array[$pos]);
$string = implode(',', $array);
或者使用MySQL:
REPLACE(column, '127,', '')
REGEX_REPLACE(column, '127$', '')
Get-UDF REGEX_REPLACE-通过^127$读取行之间的数据,我觉得您好像在将外键列表存储在逗号分隔的字符串字段中,以表示多对多关系。这不是一个好主意 您应该做的是创建一个表来存储关系 例如,假设您有一个名为users的表,并且希望存储它们之间的朋友关系。你所做的是类似于此的注意事项。在我写结尾时,我意识到这其实不是一个很好的例子,但我现在仍坚持: 而更好的做法是: 使用者 朋友 要选择Dave的朋友,您可以执行以下操作
SELECT u.*
FROM friends f
JOIN users u ON u.id = f.friend
WHERE f.user = 1
…要删除Dave和Bob之间的关系,您只需执行以下操作
DELETE FROM friends
WHERE (
user = 1 AND friend = 2
) OR (
user = 2 AND friend = 1
)
从字里行间看,我觉得您好像在将外键列表存储在逗号分隔的字符串字段中,以表示多对多关系。这不是一个好主意 您应该做的是创建一个表来存储关系 例如,假设您有一个名为users的表,并且希望存储它们之间的朋友关系。你所做的是类似于此的注意事项。在我写结尾时,我意识到这其实不是一个很好的例子,但我现在仍坚持: 而更好的做法是: 使用者 朋友 要选择Dave的朋友,您可以执行以下操作
SELECT u.*
FROM friends f
JOIN users u ON u.id = f.friend
WHERE f.user = 1
…要删除Dave和Bob之间的关系,您只需执行以下操作
DELETE FROM friends
WHERE (
user = 1 AND friend = 2
) OR (
user = 2 AND friend = 1
)
在PHP中:
$string="," . $string . ",";
str_replace("127,", "", $string);
或者您可以拆分字符串:
$list=explode(",",$string);
$new="";
foreach($list as $item){
if($item!="127"){
$new.=$item.",";
}
$new=substr_replace($new ,"",-1);
这应该行得通。在PHP中:
$string="," . $string . ",";
str_replace("127,", "", $string);
或者您可以拆分字符串:
$list=explode(",",$string);
$new="";
foreach($list as $item){
if($item!="127"){
$new.=$item.",";
}
$new=substr_replace($new ,"",-1);
这应该行得通。建议您在MySQL中试试
TRIM(BOTH ',' FROM REGEX_REPLACE(column, '127\,?', ''))
使用
希望这对你有所帮助,不妨在MySQL中试试
TRIM(BOTH ',' FROM REGEX_REPLACE(column, '127\,?', ''))
使用
希望这有帮助如果数字是1270,它将取代它too@jcho360现在应该是这样,如果我没有在regex中出错,如果数字是1270,它将替换它too@jcho360现在,如果我没有在正则表达式中出错的话,它应该是通过超越问题,通过阅读字里行间的内容。尼斯:谢谢,我正在寻找一个关于如何规范化MySQL数据库的答案。作为MySQL的新手,我提出了一个快速的问题——在选择Dave的朋友时,u和f代表什么?u和f是表名别名。基本上,它们缩短了在联接查询中引用每个表的时间。您可以只编写SELECT users.*FROM FROM friends JOIN users.id=friends.FRIENDER WHERE friends.user=1上的用户,其含义相同。在某些情况下,你需要使用别名,但这不是其中之一,它们可能有点超出了这个问题的范围。尼斯:谢谢,我正在寻找一个关于如何规范化MySQL数据库的答案。作为MySQL的新手,我提出了一个快速的问题——在选择Dave的朋友时,u和f代表什么?u和f是表名别名。基本上,它们缩短了在联接查询中引用每个表的时间。您可以只编写SELECT users.*FROM FROM friends JOIN users.id=friends.FRIENDER WHERE friends.user=1上的用户,其含义相同。在某些情况下,您需要使用别名,但这不是其中之一,它们可能有点超出了本问题的范围。