PHP ODBC SELECT 显示所有记录

PHP 使用 ODBC 函数 select access 或者 mssql 数据库时,odbc_next_result 始终返回 false,odbc_num_rows 也不能返回所有记录数,而是返回当前指针所在行行数,所以不能简单的循环通过 odbc_fetch_array 或者 odbc_fetch_object 获取所有记录,可以用 odbc_fetch_row 替代 odbc_next_result 判断是否有更多记录以返回所有记录
不过需要注意的是 odbc_fetch_row,odbc_fetch_array,odbc_fetch_object 这三个函数如果不指定第二个参数行号,那么都是先把指针前移一个,再获取指针所在行记录

/**
 * 返回 select 所有记录
 *
 * ODBC seletc access 或者 mssql 时
 * 使用 odbc_num_rows 不能返回所有记录数,而是返回当前指针所在记录行,从1开始
 * 使用 odbc_next_result 始终返回 false
 * odbc_fetch_row,odbc_fetch_array,odbc_fetch_object 这三个函数不加行号,都默认是先把指针前移,再获取指针所在行记录
 *
 * @version 0.13.9.25
 * @link http://www.php.net/manual/zh/ref.uodbc.php
 *
 * @param unknown $db ODBC 数据库连接
 * @param string $sql 需要执行的 sql select 语句
 * @return multitype:string
 */
function query_sql($db, $sql) {
    $result = odbc_exec ( $db, $sql ); // 执行sql语句
    $i = 1; // 当前行
    while ( odbc_fetch_row ( $result ) ) { // 判断有无更多记录,具体操作是先移指针再判断
        $data [$i] = odbc_fetch_array ( $result, $i ); // 获取指定的记录,不加行号是先移指针再获取
        $i ++; // 下一行
    }
    return $data;
}

评论

说两句

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据