这是我的问题:
mysql_query ("UPDATE p_candidate SET `med_comt` = CONCAT_WS(`med_comt`,' ','$_POST[med_comt]') where `candidate_id` = '$_POST[candidate_id]'");
我要做的是使用concat,以便将新注释添加到数据库而不会覆盖现有注释。
新评论没有被空格分隔,新评论会被写两次。例如,如果现有评论是“这是一个测试”而新评论是“另一个评论!”
新数据看起来像这样
这是另一个!另一个!
我想要的是:
这是另一个测试!
如果我能在这样的新行上获得新评论会更好:
这是一个测试
另一个人!
由于
答案 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,如果可能的话