我的表中有一些列,描述列包含一些信息,如;
a1b01,Value 1,2,1,60|a1b01,Value2,1,1,50|b203c,Value 1,0,2,20
使用SQL命令,我需要更新它。
在这里,如果第一个和第二个参数同时存在于当前记录(在描述列中),我将使用PHP函数进行更新。
例如:如果用户想要更改包含a1b01,Value 1
的description的值,我将执行这样的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
通过regex,但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
(第一部分更新…)
您不一定需要使用正则表达式来完成此操作,您可以使用explosion函数,因为它都是分隔符
所以你可以这样做:
$descriptionArray = explode('|', $descriptions); //creates array of the a1b01,Value 1,2,1,60 block
//then for each description explode on ,
for($i = 0; i < count($descriptionArray); $i++){
$parameters = explode(',', $descriptionArray[$i]);
do_action ($parameters[0],$parameters[1],$parameters[2],$parameters[3],$parameters[4]);
}