результат mysql в массив

#php

Вопрос:

как самый быстрый способ сделать результат mysql для массива?

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

    return $resu<
}

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;
}
 

Комментарии:

1. Быстрее, чем то, что у тебя есть? Как быстро это происходит? Это медленно? Вы проводили какое-либо профилирование?

2. разве в mysqli нет метода, который мог бы это сделать?

3. Не знаю, вы просмотрели документацию? Похоже, что есть ( php.net/manual/en/mysqli-result. fetch-all.php ) если у вас есть родной драйвер.

4. отклонено, так как это, похоже, вопрос RTFM

Ответ №1:

Используйте mysqli_result::fetch_all.

Комментарии:

1. что значит, что он доступен только с mysqlnd?

2. «Поскольку mysqli_fetch_all() возвращает все строки в виде массива за один шаг, он может потреблять больше памяти, чем некоторые аналогичные функции, такие как mysqli_fetch_array (), который возвращает только одну строку за раз из результирующего набора. Кроме того, если вам нужно выполнить итерацию по набору результатов, вам понадобится циклическая конструкция, которая еще больше повлияет на производительность. По этим причинам mysqli_fetch_all() следует использовать только в тех ситуациях, когда полученный набор результатов будет отправлен на другой уровень для обработки».

Ответ №2:

MySQLND означает собственный драйвер.

Язык сценариев PHP имеет три различных «расширения» для подключения к серверу MySQL. Термин PHP «расширение» сопоставим с терминами MySQL «Соединитель» и «Драйвер», пожалуйста, ознакомьтесь со справочным руководством MySQL для получения подробной информации. Существуют следующие расширения:

  • ext/mysql
  • ext/mysqli
  • PDO_MYSQL

Все расширения PHP MySQL являются частью исходного кода PHP. Исходный код и двоичные файлы доступны на http://php.net. Как руководство по PHP, так и Справочное руководство по MySQL содержат подробную документацию о том, какое расширение следует использовать.

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

Комментарии:

1. Это должно быть комментарием к моему ответу. Пожалуйста, удалите его и добавьте комментарий к моему ответу, или я отмечу это через 5 минут.

2. Однако я не могу ничего комментировать.

Ответ №3:

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

Комментарии:

1. $myarray = $arr должно быть $myarray[] = $arr , иначе $myarray будет переопределен, и я думаю, что это делает то же самое, что показал Кларк в своем примере

2. Не думаю, что это так. Это неправильно, вы это проверяли? Он вернет только последнюю строку…