2011-05-04 72 views
-1

如何最快的方式来创建一个数组的mysql结果?MySQL结果到数组

static function result($sql){ 
    if(!$result = self::$link->query($sql)){ 
     echo 'SQL: '.$sql.'<br>'.self::$link->error; 
    } 

    return $result; 
} 

static function rows($sql, $mode='assoc'){ 
    $result = self::result($sql); 

    $row_arr = array(); 
    if($mode == 'assoc'){ 
     while($row = $result->fetch_assoc()) $row_arr[] = $row; 
    } 
    elseif($mode == 'row'){ 
     while($row = $result->fetch_row()) $row_arr[] = $row; 
    } 
    $result->close(); 

    return $row_arr; 
} 
+0

比你有什么更快?它有多快?它慢吗?你有没有做过任何分析? – 2011-05-04 09:05:29

+0

在mysqli中没有可以做到的方法吗? – clarkk 2011-05-04 09:06:23

+2

不知道,你有没有看过文档?看起来有(http://www.php.net/manual/en/mysqli-result.fetch-all.php)如果你有本地驱动程序。 – 2011-05-04 09:07:47

回答

0
+0

这是什么意思,它只提供与mysqlnd? – clarkk 2011-05-04 09:28:02

+0

“由于mysqli_fetch_all()在一个步骤中将所有行作为数组返回,它可能会消耗比mysqli_fetch_array()更多的内存,mysqli_fetch_array()一次只返回一行结果集。需要迭代结果集,你需要一个循环结构来进一步影响性能,由于这些原因mysqli_fetch_all()只能用于那些将获取的结果集发送到另一个层进行处理的情况。 – Shoe 2011-05-04 09:41:57

0

MySQLND表示本地驱动程序。

PHP脚本语言具有三种不同的“扩展”来连接到MySQL服务器。 PHP术语“扩展”与MySQL术语“连接器”和“驱动程序”相似,请查阅MySQL参考手册了解详细信息。以下扩展名的存在:

  • 分机/ MySQL的
  • EXT/mysqli的
  • PDO_MYSQL

所有PHP的MySQL扩展是PHP的源代码的一部分。源代码和二进制文件可从http://php.net获取。 PHP手册和MySQL参考手册都包含了使用哪个扩展的详细文档。

http://dev.mysql.com/downloads/connector/php-mysqlnd/

+0

这应该是我的回答评论。请删除它并将评论添加到我的答案中,否则我会在5分钟内将其标记出来。 – Shoe 2011-05-04 09:38:49

+0

我无法评论。 – James 2011-05-04 10:32:17

-1
function returnMeArray(){ 
    $q = mysql_query("your query"); 
    $myarray = array(); 
    while ($arr = mysql_fetch_array($q)) { 
     $myarray = $arr; 
    } 
    return $myarray; 
} 
+0

'$ myarray = $ arr'应该是'$ myarray [] = $ arr'否则$ myarray将被覆盖,我想这个和clarkk在他的例子 – Mark 2011-05-04 09:40:20

+0

中显示的一样。不要这么想。这是错误的,你测试过吗?它会返回后一行... – Shoe 2011-05-04 09:40:37

+0

是的,如果你喜欢$ myarray [] = $ arr,它肯定会工作。 – 2011-05-05 10:39:51