0

这是我的查询:

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

我想做的是使用 concat 以便将新评论添加到数据库中而不会覆盖现有评论。

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

新数据看起来像这样

这是一个测试另一个!另一个!

我想要的是:

这是另一个测试!

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

这是一个测试

另一个!

谢谢

4

2 回答 2

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:请清理或准备您的数据。

于 2013-06-27T15:10:56.827 回答
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

于 2013-06-27T15:10:51.007 回答