Шаблон PHP Regex, необходимый для управления базами данных MySQL - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть несколько столбцов в моей таблице, описания столбец содержит некоторую информацию, как;

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
( первая часть обновлена ​​... )

1 Ответ

1 голос
/ 17 ноября 2011

Вам не обязательно использовать регулярное выражение, чтобы сделать это, вы можете использовать функцию explode , так как она полностью разделена

Чтобы вы могли сделать следующее:

$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]);
} 
...