Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   result 2 array (http://www.flasher.ru/forum/showthread.php?t=77306)

automatix 22.03.2006 15:05

result 2 array
 
Добрый день!

Такая штука: надобно перевести данные запроса в массив.

Вопрос 1: есть ли для этого стандартная ф-ция? Я найти не смог...

Вопрос 2: Раз такой нет, пишем сами:
PHP код:

<?php
echo mysql_num_rows($result);
function 
result2array($result)
{
    
#$testvar = 0;
    
while($row mysql_fetch_array($result))
    {
        
$no_result[] = mysql_fetch_array($result);
        
#echo ("<br />$testvar<br />\n");
        #$testvar++;
    
}
    return 
$no_result;
}
?>
<?php
$no_result 
result2array($result);
echo 
gettype($no_result);
echo 
count($no_result);
?>

Чего я тут не понимаю: count($no_result); выдает число в два раза меньше, чем mysql_num_rows($result);... Где неправ?

Спасибо.

automatix 22.03.2006 15:09

Блин, дурак! Конечно, mysql_fetch_array() же сдвигает указатель в таблице! Позор на мою лысую голову... :)
Но первый вопрос остается...

Skubent 22.03.2006 18:31

Нет стандартной.
Поскольку для ее реализации надо знать, сколько записей (и что там в одной записи есть) получилось в ответе, а это величины непредсказуемая.

automatix 22.03.2006 18:56

Ну ОК, нет --так нет. Но аргумент я, если честно, не понял. Почему на крестах нельзя сделать то, что делается на языке, на них же написанном? Вот же пример кода (наверху) этой "универсальной" ф-ции...

Skubent 22.03.2006 20:12

Допустим, у тебя в выборке 1000 записей.
Тебе нужно вывести их построчно пользователю.
Сколько отожрется памяти при построчном выводе ? Правильно, объем одной записи + чуть-чуть.
Сколько отожрется памяти при запихивании всей выборки в массив ? Правильно, 1000*объем одной записи.

automatix 22.03.2006 22:42

Ты, наверное, прав. Просто из первого сообщения можно было сделать вывод, что на # это невозможно. А это не так -- возможно, притом по понятным причинам быстрее, чем любой аналог на ПХП.

"объем одной записи + чуть-чуть" Может, ошибаюсь, но скорее объем всех записей строки "+ чуть-чуть". Но суть ясна -- любое конвертирование данных связано с затратами памяти не менее объема самих данных.

Skubent 23.03.2006 11:57

В терминах БД "запись" - это строка и есть :)

automatix 23.03.2006 12:24

Цитата:

Сообщение от Skubent
В терминах БД "запись" - это строка и есть :)

Упс... :)
Вообще это так тупо, что в ПХП нет функций, запихивающих выбранные данные в массив или объект!!! Это же нужная вещь! Может, действительно не очень быстро работало бы -- ну так напишите "МЕДЛЕННО!" или там "такой-то подход НАМНОГО быстрее", как вы это делаете с mysql_result...
Ладно, разговоры в пользу бедных...
Спасибо за ответы.

Skubent 23.03.2006 13:42

mysqli библиотека дает "объектно-ориентированный" интерфейс под БД, почитай.
А вообще, каждый программер имеет в своем арсенале самописный интерфейс под работу с БД, который при случае можно перекроить под нужды конкретного проекта.


Часовой пояс GMT +4, время: 09:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.