使用PHP快速将SQL查询中的所有数据放入数组中

时间:2013-02-07 15:26:21

标签: php sql-server arrays

我正在使用类似以下PHP代码的内容将查询中的所有数据放入数组中:

<?php

$results = array();

$q = odbc_exec("SELECT * FROM table");

while ($row = odbc_fetch_array($q)) {
    $results[] = $row;
}

?>

这样可以正常工作,但当查询包含数千行时,它会非常慢。

我的问题是,PHP中是否有任何方法可以将所有数据转储到数组中,而无需逐个遍历每个记录?

注意:将MS SQL Server用于数据库。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用mssql函数而不是odbc,但它不太可能产生很大的差异。

使用驱动程序的工作方式,结果集是结果数据本身的迭代器句柄。在某些情况下,php实际上不会获取数据,直到php请求该行。除非驱动程序中有所有可用的提取,否则循环遍历所有行通常是您唯一的选择。

如果您不需要所有列,则可以通过仅指定实际需要的列来限制传输的数据。

答案 1 :(得分:1)

指定cursor_type中的odbc_connect使得odbc获取速度更快。

$conn = odbc_connect($dsn, $user, $pass, SQL_CUR_USE_ODBC)

http://aaronsaray.com/blog/2007/08/02/odbc-for-udb-and-php-how-i-increased-performance-by-400/

答案 2 :(得分:0)

我能够使用GetAll()函数找到使用ADOdb(PHP的数据库抽象库)执行此操作的方法:

http://adodb.sourceforge.net/

  

$ results = $ DB-&gt; GetAll(“SELECT * FROM table”);

这会将所有行作为二维数组返回。

相关问题