簡體   English   中英

php while和for循環來填充數組不起作用

[英]php while and for loops to fill array not working

我有一個產品大師,其中我有2個字段,一個用於主要產品(字段名稱為“Under”),SECOND用於子產品(字段名稱為'Prod_desc)我想要的是一個嵌套循環,我捕獲所有代碼來自事務表(ECR_CBDC)的(字段名稱為Cylno)。

我有2個嵌套循環,第一個while循環用於PRODUCT_MASTER,根據用戶選擇主產品選擇子產品,SECOND循環用於收集所有子產品的代碼。

現在問題是它只收集1個值,因為FOR循環覆蓋了以前的值。 是否有任何其他循環可以保存每個子產品的先前值。

$p=mysql_query("SELECT * FROM PRODMAST WHERE Under='$product'");
while ($p2=mysql_fetch_assoc($p))
{
    $prodesc=$p2['Prod_desc'];

    $dc=mysql_query("SELECT * FROM ECR_CBDC WHERE Prod_desc='$prodesc'  AND usr='$user'");
    $num_rows = mysql_num_rows($dc);
    $fill_from_array = array(); /* as "value"=>"option" */
    for($i = 1; $i <= $num_rows; $i++)
    {
        $row = mysql_fetch_assoc($dc);
        $fill_from_array[$row['Cylno']] = $row['Cylno'];
    }
}

如果我理解你的要求 - $ fill_from_array只收集一行的價值 - 我認為你需要在第一個循環之外定義$ fill_from_array,所以...

$p=mysql_query("SELECT * FROM PRODMAST WHERE Under='$product'");
$fill_from_array = array(); /* as "value"=>"option" */
while ($p2=mysql_fetch_assoc($p))
{
    $prodesc=$p2['Prod_desc'];

    $dc=mysql_query("SELECT * FROM ECR_CBDC WHERE Prod_desc='$prodesc'  AND usr='$user'");
    $num_rows = mysql_num_rows($dc);
    for($i = 1; $i <= $num_rows; $i++)
    {
        $row = mysql_fetch_assoc($dc);
        $fill_from_array[$row['Cylno']] = $row['Cylno'];
    }
}

這樣,每次while()循環循環時都不會覆蓋$ fill_from_array。 你是這個意思嗎?

而不是在代碼中模擬連接,而是使用JOIN語法來減少循環次數和數據傳輸:

SELECT * FROM PRODMAST 
INNER JOIN ECR_CBDC ON PRODMAST.Prod_desc=ECR_CBDC.Prod_desc AND usr='$user'
WHERE Under='$product'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM