【问题标题】:odbc query returns the first row twice then returns the rest normallyodbc 查询两次返回第一行,然后正常返回其余行
【发布时间】:2013-07-05 12:59:48
【问题描述】:

我正在通过 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;
          }

【问题讨论】:

  • 确保您没有将该用户名插入两次
  • 如果您在 php 应用程序之外运行查询会发生什么?
  • 您能否添加一些代码来显示您如何遍历结果集?
  • 如果我在应用程序之外运行它,则没有重复。
  • @WhiteSnow - 我有一个模糊的记忆,odbc_ 函数返回的结果集是 1 索引的,而不是你所期望的 0 索引的(我在手册页上找不到任何内容支持这一点,除了在php.net/manual/en/function.odbc-result.php 上的注释)。

标签: php sql database odbc


【解决方案1】:

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

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

例如,请尝试 foreach ($elems as $elem) { ... },而不是 for ()

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

【讨论】:

    【解决方案2】:

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

    while ($row = odbc_fetch_array($result))
    {
       // do something
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 2021-02-05
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多