MYSQL更新并在单元格中添加值


MYSQL Update and add a value into cell

你好,朋友们,我想用新内容更新表中的单元格,但保留已有的内容。我需要添加用逗号或换行符分隔的新数据(不相关),保留里面的数据。

|id | title | referer|
|--------------------|
| 1 | post1 | google |
| 2 | post2 | yahoo  |
| 3 | post3 | bing   |
| 4 | post4 | google |

添加了新内容后,表应该是这样的。

|id | title | referer           |
|-------------------------------|
| 1 | post1 | google,yahoo,bing |
| 2 | post2 | yahoo,bing,etc    |
| 3 | post3 | bing              |
| 4 | post4 | google,google     |

这是我在数据库中插入新行的代码:

mysql_query("INSERT IGNORE INTO posts (id,title,referer) VALUES (null,'$q','$referer')");

在逗号分隔或换行的单元格"referer"中添加信息的代码是什么?

提前感谢

我不确定如何用逗号分隔它们,除非你想创建一个变量数组,并将它们concat转换为一个变量,并使用mysql's CONCAT函数更新表以保留最后的字段数据:

$referes_list = '';
foreach ($referers as $referer) {
    $referes_list .= $referer . ", ";
} 
UPDATE referers SET referer=CONCAT(referer,'$referes_list') WHERE id='$id' ;

如果我的MySQL技能不是最好的,你必须原谅我,但我在这里要做的只是简单地获取当前值,在其中添加一个逗号和新值,然后更新单元格。

还是我误解了你的问题?

在mysql中没有"逗号分隔类型",这只是一个简单的字符串或VARCHAR,因此,您需要获取以前的数据,并像php中的字符串一样将其连接起来,然后更新它。

我想你正在寻找这样的东西:

update t
    set referrer = (case when referer is null or referer = ''
                         then @newvalue
                         else concat(referer, ',', @newvalue)
                    end)
    where id = @id;

mysql_query('UPDATE tablename SET referer = concat(referer,", '.$value.'") where id="'.$id.'")';这应该可以做到,但还没有经过测试。