直接SQL操作——不懂 PHP解决办法: $sql = 'SELECT `test` FROM `tbl` WHERE ...'; $result = $mysqli->query($SQL); $row = $result->fetch_array(); $arr = explode(',',$row['test']); //字段数据转换为数组//删除 if (array_search('3',$arr)) unset($arr[array_search('3',$arr)]); $arr = array_values($arr); //添加 $arr[] = '6'; $arr = array_unique($arr);//更新 $sql = 'UPDATE `tbl` SET `test` = "'.implode(',',$arr).'" WHERE ...';
抛块儿砖: MySQL不支持正则替换,所以只能用replace()这个笨办法。 为了方便处理,建议将字段修改一下,使每个值的前后都跟一个“,”。然后用: UPDATE table SET field = REPLACE(',1,2,3,4,5,6,', ',3,', ','); 修改。用: SELECT * FROM table WHERE field LIKE '%,6,%' 判断6是否存在。
PHP解决办法:
$sql = 'SELECT `test` FROM `tbl` WHERE ...';
$result = $mysqli->query($SQL);
$row = $result->fetch_array();
$arr = explode(',',$row['test']); //字段数据转换为数组//删除
if (array_search('3',$arr)) unset($arr[array_search('3',$arr)]);
$arr = array_values($arr);
//添加
$arr[] = '6';
$arr = array_unique($arr);//更新
$sql = 'UPDATE `tbl` SET `test` = "'.implode(',',$arr).'" WHERE ...';
MySQL不支持正则替换,所以只能用replace()这个笨办法。
为了方便处理,建议将字段修改一下,使每个值的前后都跟一个“,”。然后用:
UPDATE table SET field = REPLACE(',1,2,3,4,5,6,', ',3,', ',');
修改。用:
SELECT * FROM table WHERE field LIKE '%,6,%'
判断6是否存在。
觉得好麻烦。
(
ID MEDIUMINT(8) UNSIGNED NOT NULL COMMENT '用户ID',
friend_UID MEDIUMINT(8) UNSIGNED NOT NULL COMMENT '好友ID',
PRIMARY KEY (ID, friend_UID)
)
COMMENT '用户好友';
(
ID MEDIUMINT(8) UNSIGNED NOT NULL COMMENT '用户ID',
friend_UID MEDIUMINT(8) UNSIGNED NOT NULL COMMENT '好友ID',
PRIMARY KEY (ID, friend_UID)
)
COMMENT '用户好友';
________________________________再建立个表,是不是效率更低呢?存疑。没有算过运行时间。
这个贴可以结了。终究没有让人惊喜的东东。