Sql 循环时不显示结果

Sql 循环时不显示结果,sql,powershell,Sql,Powershell,我正在做一个powershell,它通过一个循环从一个具有不同参数的sql查询中获取结果。问题是只有第一次运行循环才有结果。其余的都是空白结果,也应该显示一些结果 $Days = @(90,60,30,15) $Start = 0 $End = 0 $Affiliation = 1 for ($i = 0 ; $i -lt $Affiliation.Count ; $i++) { for ($i = 0; $i -lt $Days.Count ; $i++){ if ($Days[$i

我正在做一个powershell,它通过一个循环从一个具有不同参数的sql查询中获取结果。问题是只有第一次运行循环才有结果。其余的都是空白结果,也应该显示一些结果

$Days = @(90,60,30,15)
$Start = 0
$End = 0
$Affiliation = 1
for ($i = 0 ; $i -lt $Affiliation.Count ; $i++) { 
for ($i = 0; $i -lt $Days.Count ; $i++){
    if ($Days[$i] -eq 1) {
        $End = $Days[$i]
        $Start = 0
        write-host "Start/End r:" $Start $End
    } 
    elseIf ($index -eq $Days.Length) {
        $End = $Days[$i]
        $Start = 0
        write-host "Start/End m:" $Start $End 
    }
    else {
        $End = $Days[$i]
        $Start = $Days[$i+1] + 1
        write-host "Start/End s:" $Start $End
    }
          ########## Queries

        $Querydays = " SELECT 
        distinct tblcustomer.CustomerName AS Customer_Name
        , tblsma.sorno AS SMA_SOR_Number
        , FUNC_GET_JSON_VALUES('Name', tblsma.products) AS Products
        , DATE_FORMAT(tblsma.expiryDate, '%m/%d/%Y') AS Expiry_Date
        , tblsma.Remarks AS 'Remarks'
        , DATEDIFF( DATE(tblsma.expiryDate), CURDATE()) AS Days_Left_Before_Expiration 
         #,GROUP_CONCAT(tblsma.products) AS 'PRODUCT'
        FROM
        where 
        tblcustomer.affiliationID = '" + $Affiliation[$i] + "'
        and tblcustomer.affiliationID <> 95
        and tblaccountsgroup.GroupID <> 5
        and datediff(DATE(tblsma.expiryDate), CURDATE()) between " + $Start + " and " + $End + "
        order by Days_Left_Before_Expiration DESC"
        #####################
        $ResultDays=$null
        $ResultDays = MysqlConn -Query $Querydays
        Write-Host $ResultDays
        $EmailBody =  $EmailBody + "`r `n" + "<b>List of Valid License that will due in next " + $Days[$i] + " days:</b>"
        foreach($row in $ResultDays)
        {
            $EmailBody = "`n" + $EmailBody + "`r `n" + "Account Name : " + $row.Item(0) + "`r" +
            "SOR No.      : " + $row.Item(1) + "`r" +
            "Product Name : " + $row.Item(2) + "`r" +
            "Expiry Date  : " + $row.Item(3) + "`r" +
            "Remarks      : " + $row.Item(4) + "`r" +
            "Days Before Expiry : " + $row.Item(5) + "`r" +
            "`n"  
        } 
    $rep = $Days[$i+1]
}
}

Start/End s: 61 90
System.Data.DataRow System.Data.DataRow System.Data.DataRow
Start/End s: 31 60

Start/End s: 16 30

Start/End s: 1 15
因为在两个forloop中都使用相同的变量$i,所以它将一直被覆盖。更改其中一个的名称。 坏的:

好:

因为在两个forloop中都使用相同的变量$i,所以它将一直被覆盖。更改其中一个的名称。 坏的:

好:


$affiliation在这里不是数组,但您使用$affiliation.count和$affiliation[$i]处理它。为什么会这样?请更改第二个for循环的变量名$i,因为您使用的是$i的两倍,因此这将一直被覆盖…$affiliation在这里不是数组,但您将其视为$affiliation.count和$affiliation[$i]。为什么?更改第二个for循环的变量名$i,因为您使用了$i的两倍,所以这将一直被覆盖…谢谢,我没有注意到我在两个循环中使用了相同的变量。谢谢,我没有注意到我在两个循环中使用了相同的变量。
for ($i = 1; $i -lt 11; $i ++)
{
    ('First for loop: ' + $i)

    for ($i = 1; $i -lt 11; $i ++)
    {
        ('Second for loop: ' + $i)
    }
}
First for loop: 1
Second for loop: 1
Second for loop: 2
Second for loop: 3
Second for loop: 4
Second for loop: 5
Second for loop: 6
Second for loop: 7
Second for loop: 8
Second for loop: 9
Second for loop: 10
for ($i = 1; $i -lt 11; $i ++)
{
    ('First for loop: ' + $i)

    for ($x = 1; $x -lt 11; $x ++)
    {
        ('Second for loop: ' + $x)
    }
}
First for loop: 1
Second for loop: 1
Second for loop: 2
Second for loop: 3
Second for loop: 4
Second for loop: 5
Second for loop: 6
Second for loop: 7
Second for loop: 8
Second for loop: 9
Second for loop: 10
First for loop: 2
Second for loop: 1
Second for loop: 2
...