concat两次写入数据

时间:2013-06-27 15:07:36

标签: php mysql

这是我的问题:

mysql_query ("UPDATE p_candidate SET  `med_comt` = CONCAT_WS(`med_comt`,' ','$_POST[med_comt]') where `candidate_id` = '$_POST[candidate_id]'");

我要做的是使用concat,以便将新注释添加到数据库而不会覆盖现有注释。

新评论没有被空格分隔,新评论会被写两次。例如,如果现有评论是“这是一个测试”而新评论是“另一个评论!”

新数据看起来像这样

  

这是另一个!另一个!

我想要的是:

  

这是另一个测试!

如果我能在这样的新行上获得新评论会更好:

  

这是一个测试

     另一个人!

由于

2 个答案:

答案 0 :(得分:4)

您正在使用CONCAT_WS,就好像它是CONCAT一样。 CONCAT_WS的工作方式不同。您的第一个参数应该是SEPARATOR,剩下的参数是通过SEPARATOR分割的值。

mysql_query ("UPDATE p_candidate SET  `med_comt` = CONCAT_WS(' ', `med_comt`, '$_POST[med_comt]') where `candidate_id` = '$_POST[candidate_id]'");

PS:请清理或准备您的数据。

答案 1 :(得分:1)

CONCAT_WS()代表Concatenate With Separator,是CONCAT()的一种特殊形式。 第一个参数是其余参数的分隔符。

尝试

mysql_query ("UPDATE p_candidate SET  `med_comt` = CONCAT_WS(' ',`med_comt`,' ','$_POST[med_comt]') where `candidate_id` = '$_POST[candidate_id]'");

另外请不要在sql查询中直接使用用户提供的数据,而不要在使用之前至少转义它。例如,使用mysql_real_escape_string()

请注意mysql_ *函数的php手册页上的大警告框,真的应该改为使用mysqli_ *函数或PDO,如果可能的话