2013-02-25 66 views
0

在BPM应用程序中,我试图循环访问关联数组的关联数组,并使用foreach循环仅返回值(APP_UID)。但是,我只能显示最后生成的值,而不是所有的值。Foreach多维数组显示值

这里是我的代码:

$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') 

有关我在做什么错的任何想法?

+0

其他人给你正确的答案。不过,我只想说,在构建IN语句的这些情况下,我倾向于使用要使用的值创建一个数组,然后使用implode(',',$ array)创建逗号分隔的字符串。 – eli 2013-02-25 04:48:51

回答

1

我觉得你在这里缺少串联:

初始化变量像下面的圈顶部:

如低于0
$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)"); 
} 
0

变化

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

到:

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

注意级联.=

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 = '';为“初始化字符串”。