【问题标题】:add to existing value in mysql column using CONCAT function?使用 CONCAT 函数添加到 mysql 列中的现有值?
【发布时间】:2013-01-26 18:18:35
【问题描述】:

尝试使用 mysql 的 concat 函数将文本添加到 mysql 中的现有值?

所以现有值当前是“john”,函数运行后将是“johnewvalue”

我正在尝试在我的数据库 ptb_messages 的主题列中的现有文本中添加一段文本 ':reply'。

我正在尝试使用 mysql 的 concat 函数来执行此操作,但我没有得到任何结果。

$sql = mysql_query("UPDATE ptb_messages SET subject = CONCAT subject, 'newvalue' WHERE id='".$message_id."'"); 

有人可以告诉我一种让它做我想做的事情的方法。谢谢。

【问题讨论】:

标签: mysql sql sql-update


【解决方案1】:

应该是

UPDATE ptb_messages 
SET subject = CONCAT( subject, 'newvalue')
WHERE ... 

在 PHP 中

$sql = mysql_query("UPDATE ptb_messages SET subject = CONCAT(subject, 'newvalue') WHERE id='".$message_id."'"); 

作为旁注,如果变量的值(s)来自外部,则查询很容易受到SQL Injection 的攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

【讨论】:

  • 只运行一次是什么意思?
  • 好吧,当用户回复用户消息时,这会将 :reply 放在主题标题之后,但如果 :reply 存在,则保持主题不变,不要再添加 :reply 。
  • uhm.. 你能给出期望结果的样本记录吗?
  • 示例:主题 'test' 提交时变为 'test:reply' 然后如果用户再次提交其中 message_id = '' 那么主题不会更新为 'test:reply:reply' 而是保持为 '测试:回复'
  • 我现在明白你的意思了,但我还是很困惑。你怎么知道最后一个连接的值等于当前主题,试试看,UPDATE ptb_messages SET subject = IF(subject LIKE '%newValue', '', CONCAT(subject, 'newvalue')) WHERE ....
猜你喜欢
  • 2018-06-06
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 2012-09-25
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
相关资源
最近更新 更多