2011-05-04 71 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