簡體   English   中英

PHP mssql和while循環跳過一項

[英]PHP mssql and while loop skips one item

我有一個小問題,我試圖從數據庫中回顯所有符合我條件的項目。 有4個項目-但我只打印了3個項目。 任何想法?

$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
$sql = "SELECT Description
        FROM MI_Tracker
        WHERE Status ='In Progress'";
$stmt = sqlsrv_query( $conn, $sql);
$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC);
if( sqlsrv_fetch( $stmt ) === false) {
     die( print_r( sqlsrv_errors(), true));
}
do  
{ echo $row['Description'],'<br>';}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) );

代碼編輯:

$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {

}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
$sql = "SELECT Description
        FROM MI_Tracker
        WHERE Status ='In Progress'";
$stmt = sqlsrv_query( $conn, $sql);
if( sqlsrv_fetch( $stmt ) === false) {
     die( print_r( sqlsrv_errors(), true));
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) )
{ echo $row['Description'],'<br>';}

仍然-缺少1個項目。

從代碼中刪除以下行的第一次出現:

$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC);

還有另一個獲取:

if( sqlsrv_fetch( $stmt ) === false) {
     die( print_r( sqlsrv_errors(), true));
}

這是殺手er:它使您失去了其中一行,因為您只是使用if將該指針移至第三行。 而是直接檢查$ stmt變量中的錯誤,並使用標准的while循環,如下所示:

$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false) {
     die( print_r( sqlsrv_errors(), true));
}
while ($row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) {
    echo $row['Description'],'<br>';
}

它獲取一行,但是由於稍后有一個while循環執行該操作,因此您永遠不會處理該第一行。 循環在執行任何操作之前會再次執行提取,這意味着您丟失了第一行。

只要這樣做

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) );

如果沒有以下聲明,則:

$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC); //Remove this
if( sqlsrv_fetch( $stmt ) === false) {

在此處查看示例。 http://php.net/manual/zh/function.sqlsrv-fetch-array.php

暫無
暫無

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

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