0

BPMアプリケーション内で、連想配列の連想配列をループし、foreachループを使用して値(APP_UID)のみを返すようにしています。ただし、表示できるのは最後に生成された値のみで、すべての値を表示することはできません。

これが私のコードです:

$currentUser = @@USER_LOGGED;
//Copy Notes to Subprocess
$caseId = @@APPLICATION; //Case UID
$subcases = executeQuery("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT='$caseId'");
if (is_array($subcases) and count($subcases) > 0) { 
  foreach($subcases as $subcase)
  $subCaseId = $subcase["APP_UID"] . ", ";

//Update the Sent By status
executeQuery("UPDATE APP_CACHE_VIEW SET PREVIOUS_USR_UID = '$currentUser' WHERE APP_UID IN ('$subCaseId')");
}

executeQuery関数は、以下のようなSQLステートメントを生成する必要がありますが、そうではありません。例:

UPDATE APP_CACHE_VIEW SET PREVIOUS_USR_UID = '54454572356235' WHERE APP_UID IN      
('336545547', '436545534', '736545125')

私が間違っていることについて何か考えはありますか?

4

3 に答える 3

3

これを試して。

    $currentUser = @@USER_LOGGED;
    //Copy Notes to Subprocess
    $caseId = @@APPLICATION; //Case UID
    $subcases = executeQuery("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT='$caseId'");
    if (is_array($subcases) and count($subcases) > 0) { 
      $subCaseId = '';
      foreach($subcases as $subcase)
      $subCaseId .= $subcase["APP_UID"] . ", ";

    //Update the Sent By status
    executeQuery("UPDATE APP_CACHE_VIEW SET PREVIOUS_USR_UID = '$currentUser' WHERE APP_UID IN ('$subCaseId')");
    }

$subCaseId = '';また、コードで「文字列を再初期化する」ことを忘れないでください。

于 2013-02-25T04:42:40.183 に答える
1

ここで連結が欠落していると思います:

ループの上に以下のように変数を初期化します。

$subCaseId = '';

.=以下のように連結演算子を使用します。

$subCaseId .= $subcase["APP_UID"] . ", ";

理想的には、変数から最後のコマンドとスペースも削除する必要があります$subCaseId

また、INクエリでは、この変数を囲む一重引用符を削除する必要があります。

以下の完全なソリューションを参照してください。

$currentUser = @@USER_LOGGED;
//Copy Notes to Subprocess
$caseId = @@APPLICATION; //Case UID
$subcases = executeQuery("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT='$caseId'");
if (is_array($subcases) and count($subcases) > 0) { 
    $subCaseId = '';
      foreach($subcases as $subcase)
          $subCaseId = $subcase["APP_UID"] . ", ";
    //To remove last comma and space
    $subCaseId = substr($subCaseId,0,-2);

//Update the Sent By status
executeQuery("UPDATE APP_CACHE_VIEW SET PREVIOUS_USR_UID = '$currentUser' WHERE APP_UID IN ($subCaseId)");
}
于 2013-02-25T04:42:13.923 に答える
0

変化する

 foreach($subcases as $subcase)
  $subCaseId = $subcase["APP_UID"] . ", ";

に :

  $subCaseId = '';
  foreach($subcases as $subcase)
  $subCaseId .= $subcase["APP_UID"] . ", ";

連結に注意してください.=

于 2013-02-25T04:41:10.690 に答える