我必须执行类似于以下的查询:
<?php
//....connect to database
$old = "a,b,c,d";
$new = "e,f,g,h";
$insert = "UPDATE TABLE SET FIELD = CONCAT(" . $old . ", " . $new . ") WHERE something = 'something';
mysql_query($insert);
?>
因此,基本上,我想用包含逗号的"new"字符串附加当前数据库条目。但是由于CONCAT函数使用逗号,我遇到了麻烦。
有人有什么技巧可以做到这一点吗?
更改此行
$insert = "UPDATE TABLE SET FIELD = CONCAT(" . $old . ", " . $new . ") WHERE something = 'something'";
到这个
$insert = "UPDATE TABLE SET FIELD = CONCAT('$old', '$new') WHERE something = 'something'";
编辑:
如果要在连接的$old
和$new
字符串之间使用逗号,请使用CONCAT_WS(http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws)
像这样:
$insert = "UPDATE TABLE SET FIELD = CONCAT_WS(',', '$old', '$new') WHERE something = 'something'";
使用函数mysql CONCAT_WS()
->Concatenate With Separator
UPDATE TABLE_NAME SET FIELD_NAME = CONCAT_WS(",",FIELD_NAME,FIELD_NAME2) WHERE CONDITON
字符串必须用引号分隔。
$insert = "UPDATE TABLE SET FIELD = CONCAT(FIELD,',','$new') WHERE ...";
破坏PHP字符串也没有意义,只添加无用的噪声。
此外,我还闻到了数据库规范化
您需要在变量周围添加引号,以便获得字符串,如下所示(我还添加了一个尾部双引号):
$insert = "UPDATE TABLE SET FIELD = CONCAT('" . $old . "', '" . $new . "') WHERE something = 'something'";