2012-01-10 34 views
0

我有一些PHP代碼令我感到莫名其妙。我知道,我需要通過數組進行迭代並運行該陣列中的每個值的SQL查詢,但我迷路了怎麼辦,在我的代碼:要求SQL查詢幫助的PHP循環

$kit_bin_count = 0; 
    $kit_itemno_array = null; 
    $kit_bin_array = null; 

    // iterate through array 
    while ($kit_row = odbc_fetch_array($result_ickitd)) { 
     // store results from mysql in our own PHP array 
     $kit_itemno_array[$kit_count] = $kit_row['COMPONENT']; 
     // increment counter 
     $kit_count++; 
    } 
    for($k=0;$k<sizeof($kit_itemno_array);$k++) { 
     $var_kit_item = $kit_itemno_array[$k]; 
     $newvar_kit_item = trim($var_kit_item); 
     } 

/* $params = "'".implode("','",$kit_itemno_array)."'"; 
    echo "$params"; */ 

/* foreach ($kit_itemno_array as $country) 
    { 
     $query .= "OR stv.name = '{$country}', "; 
    } */ 

    $sql_kit_bin="SELECT * FROM icitem, iciloc WHERE icitem.itemno = '$kit_itemno_array[$k]' AND iciloc.itemno = icitem.itemno"; 
    $result_kit_bin=odbc_exec($conn,$sql_kit_bin); 
    while ($kit_bin_row = odbc_fetch_array($result_kit_bin)) { 
     $kit_bin_array[$kit_bin_count] = $kit_bin_row['PICKINGSEQ']; 
     $kit_bin_count++; 
     print_r($kit_bin_array); 
    } 
    // END KITTING 
     echo "<span style=\"color:#66CCFF\">"; 
     echo "$kit_bin_array[$k]"; 
     foreach ($kit_bin_array as $kit_bin) { 
    //  if(strpos($file_array, $kit_item) !== FALSE) { 
      echo '<br />' . $kit_bin ; } 
    //  else { 
    //   $kit_post_array[] = $kit_item; 
    //   echo '<br />' . 'KI: ' . $kit_item ; } 
    //  } 
    echo "</span>"; 

我的代碼返回第一值正確並將其置於$kit_item_array變量中,但其他行正在丟失。我不確定如何在我現有的循環內部循環,所以一切都正常返回。

下面是結果的屏幕截圖,包括正在返回的數組的print_r()

results

+0

'$ kit_count'被使用...拿出來,我沒有得到任何結果。我承認'$ kit_bin_count'沒有用,並且在嘗試了幾個場景後可能會留在那裏。無論如何,有沒有人知道我如何才能使這個工作? – 2012-01-10 23:21:00

回答

2

如果你正確地縮進代碼,你會發現它容易發現代碼中的問題。在你的情況,我懷疑問題就出在一個額外的}這裏:

for($k=0;$k<sizeof($kit_itemno_array);$k++) { 
    $var_kit_item = $kit_itemno_array[$k]; 
    $newvar_kit_item = trim($var_kit_item); 
    } // <<--- This closes the loop when I don't think you meant to 

您的代碼可以減少到一個環和一個查詢,我懷疑(假設你正在使用MySQL,爲您的意見之一建議)。我可以;噸給你完整的代碼,因爲沒有顯示你的第一個查詢,但讓這個例子的目的,說這是:

SELECT COMPONENT FROM items 

如果我們讓你的第二個查詢,上面顯示的一個,分爲:

SELECT * 
FROM icitem t 
JOIN iciloc l ON l.itemno = t.itemno 
WHERE t.itemno IN (
    SELECT COMPONENT 
    FROM items 
) 

...它幾乎呈現在查詢之前的所有代碼毫無意義。

+0

我最終編輯了一個SQL查詢,該代碼覆蓋了所有這些代碼,以取代我所需的所有內容,而不是單獨嘗試。我不知道爲什麼我原本不這麼認爲,但是我感謝你指出我朝那個方向發展。絕對容易得多。 8-) – 2012-01-11 12:24:07