【发布时间】:2011-11-17 00:58:17
【问题描述】:
我的表中有一些列,descriptions 列包含一些信息,例如:
a1b01,Value 1,2,1,60|a1b01,Value2,1,1,50|b203c,Value 1,0,2,20
使用 SQL 命令,我需要更新它。
如果第一个参数和第二个参数同时存在于当前记录中(在描述列中),我将使用 PHP 函数进行更新。
例如:如果用户想要更改包含a1b01,Value 1 的描述值,我将执行这样的SQL 命令;
function do_action ($code,$value,$new1,$new2,$newresult) {
UPDATE the_table SET descriptions = REPLACE(descriptions, $code.','.$value.'*', $code.','.$value.','.$new1.','.$new2.','.$newresult)";
}
- (星号)表示,这些部分是未知的(这就是我需要正则表达式的原因)
我的问题是:我怎样才能得到
a1b01,Value 1,2,1,60|
下面的字符串部分
a1b01,Value 1,2,1,60|a1b01,Value2,1,1,50|b203c,Value 1,0,2,20
通过正则表达式,但a1b01 和Value 1 应该作为参数获取。
我只是想要那个;当我这样打电话给do_action时;
do_action ("a1b01","Value 1",2,3,25);
记录将是:a1b01,Value 1,2,3,25|a1b01,Value2,1,1,50|b203c,Value 1,0,2,20
(第一部分已更新...)
【问题讨论】:
-
为什么要将序列化值存储在 RDBMS 中?阅读:stackoverflow.com/questions/7364803/…。如果您的表格设计得当,就不会有这个问题。
标签: php regex database denormalized