0

テーブルにいくつかの列があり、説明列には次のような情報が含まれています。

a1b01,Value 1,2,1,60|a1b01,Value2,1,1,50|b203c,Value 1,0,2,20

SQL コマンドを使用して、更新する必要があります。

そこで、現在のレコード (説明列) に最初と 2 番目のパラメーターが一緒に存在する場合、PHP 関数を使用して更新します。

例: ユーザーが description を含む値を変更したい場合、その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

4

1 に答える 1

1

これを行うために必ずしも正規表現を使用する必要はありません。すべて区切られているため、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]);
} 
于 2011-11-17T01:18:32.240 に答える