1

我正在通过 php 查询具有 odbc 连接的数据库。当我查询数据库时,它返回第一行两次,然后其余行返回正确的次数。

示例查询:

$stm = SELECT[sUsername] FROM [dbo].[Abilis].[Users] WHERE sUsername = ?;
$pstm = odbc_prepare($conn, $stm);
$exc = odbc_execute($query, array($Username));

我也尝试过使用 DISTINCT,但这也没有奏效。

编辑:

for($i=0; $i<odbc_num_rows($pstm);$i++){

            $row = odbc_fetch_array($pstm, $i);
            if($row['OnCreditHold'] == '1'){
              $out = '<button style="color:red;margin:0 auto;" class="btn" onclick="'.'window.location.href='."'information.php?info=".$row['Account_no'];
              $out .= "'".'">'.$row['Name'].'</br>';
              $out .= $row['Del_ad1'].'</button>';
            }
            else{
              $out = '<button class="btn" style="margin: 0 auto;" onclick="'.'window.location.href='."'information.php?info=".$row['Account_no'];
              $out .= "'".'">'.$row['Name'].'</br>';
              $out .= $row['Del_ad1'].'</button>';

            }
            echo $out;
          }
4

2 回答 2

1

您已检查查询结果在此应用程序之外是否良好 - 对您有好处。这意味着问题在于您的循环结构,或者您获取数据的方法,例如odbc_fetch_array().

我曾经遇到过这个问题,我不记得解决方案。我不得不尝试其他方法来隔离原因。

例如,代替for (),尝试foreach ($elems as $elem) { ... }

当然,在您进行故障排除时,请简化所有其他方面。例如,删除if()结构。

于 2013-07-05T17:37:53.157 回答
0

使用函数 odbc_fetch_array ($pstm, $i) 和从零开始的第二个参数会导致问题。当你使用 0,第二次使用 1 时,它会给你同样的结果。您可以使用 while 循环而不是 for 循环,并且不要使用第二个参数。

while ($row = odbc_fetch_array($result))
{
   // do something
}
于 2022-01-24T12:30:05.993 回答