如何在`UPDATE`中使用`CONCAT`

时间:2016-01-15 15:04:21

标签: mysql

我试图在mysql CONCAT中使用UPDATE

"INSERT INTO table ( 
   objekt_nr,
   objekt_status)
 VALUES(
  :objekt_nr,
  'salj,$fakt')

 ON DUPLICATE KEY UPDATE
  objekt_status = VALUES(CONCAT(objekt_status, 'salj,$fakt'))";

 $query_params = array(
   ':objekt_nr' => $_POST['objekt_nr']);

我尝试了几个:

objekt_status = VALUES(CONCAT(objekt_status, objekt_status))";
objekt_status = VALUES(CONCAT(objekt_status, 'addMe'))";
objekt_status = VALUES(CONCAT(objekt_status, 'salj,$fakt'))";
objekt_status = VALUES((CONCAT(objekt_status, 'salj,$fakt')))";

错误代码:     objekt_status = VALUES(CONCAT(objekt_status, 'salj,$fakt'))";
...在'(objekt_status,'salj,fakt,'))附近使用的语法'

代码应该如何?

3 个答案:

答案 0 :(得分:2)

你有一个分号,其中应该有一个逗号(在VALUES(objekt_nr);之后),并且撇号位于$fakt的最后一行的错误位置。仅VALUES,手动here

才需要INSERT

此查询应该是正确的:

"INSERT INTO table ( 
   objekt_nr,
   objekt_status)
 VALUES(
  :objekt_nr,
  'salj,$fakt')

 ON DUPLICATE KEY UPDATE
  objekt_nr = objekt_nr,
  objekt_status = CONCAT(objekt_status, 'salj,$fakt')";

另外,请确保您的变量被转义,或使用准备好的声明。

答案 1 :(得分:1)

尝试从查询中删除values以及分号

   "INSERT INTO table ( 
    objekt_nr,
    objekt_status)
    VALUES(
   :objekt_nr,
   'salj,$fakt')

    ON DUPLICATE KEY UPDATE
    objekt_nr = objekt_nr,
    objekt_status = CONCAT(objekt_status, 'salj,'$fakt)";

答案 2 :(得分:0)

实际上在我的情况下,我需要"价值观"除了CONCAT线以外的每一条线。

objekt_created_when = VALUES(objekt_created_when),
objekt_status = CONCAT(objekt_status, 'salj,$fakt') ";

如果我确实从所有行中删除了VALUES,则db中的值为空!