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; }
说两句