[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как получать результаты от $mysqli->multi_query
VELIK505
Вот делаю мульти запрос:
$res=$mysqli->multi_query("
select count(id) as kolvo from tb_work where vip='1';
select count(id) as kolvo2 from tb_ask where vip='1'
");
Каким образом мне получить результаты?



Спустя 6 минут, 17 секунд (18.09.2012 - 22:53) killer8080 написал(а):
Пример из мануала
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$query = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

/* execute multi query */
if ($mysqli->multi_query($query)) {
do {
/* store first result set */
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_row()) {
printf("%s\n", $row[0]);
}
$result->free();
}
/* print divider */
if ($mysqli->more_results()) {
printf("-----------------\n");
}
}
while ($mysqli->next_result());
}

/* close connection */
$mysqli->close();

Спустя 7 минут, 39 секунд (18.09.2012 - 23:00) VELIK505 написал(а):
наверное я посмотрел туда как ты думаешь?

Спустя 2 минуты, 26 секунд (18.09.2012 - 23:03) killer8080 написал(а):
Цитата (VELIK505 @ 18.09.2012 - 23:00)
наверное я посмотрел туда как ты думаешь?

Если задаешь такой вопрос, то видимо нет smile.gif
Иначе как минимум, привел бы код, как пытался делать, и спрашивал бы конкретно, что не так.

Спустя 9 минут, 30 секунд (18.09.2012 - 23:12) VELIK505 написал(а):
Я тебе привёл. Ты разницу понимаешь? В мануале показано стандартное использование мультизапросов то что пачкой остсылаем на сервер несколько запросов и можем получать результат запросов не дожидаясь результата следующего запроса. Мне же надо дождаться все ответы но одновременно отправлять запросы пачкой на сервер.
$res=$mysqli->multi_query("
select count(id) as kolvo from tb_work where vip='1';
select count(id) as kolvo2 from tb_ask where vip='1'
"
);

отсылаю потом через assoc разбираю результаты не фурычит.
Вот и спрашиваю как в моём случае получить результаты запросов?

Спустя 2 минуты, 33 секунды (18.09.2012 - 23:15) inpost написал(а):
Выше же код, тебе перед этим надо $result = $mysqli->store_result().

Спустя 8 минут, 40 секунд (18.09.2012 - 23:24) killer8080 написал(а):
VELIK505
multi_query не возвращает mysqli_result object, соответсвенно и никакого метода fetch_assoc там нет. Чтобы получить результат нужно использовать mysqli::store_result или mysqli::use_result, по другому никак.
Цитата (VELIK505 @ 18.09.2012 - 23:12)
Мне же надо дождаться все ответы но одновременно отправлять запросы пачкой на сервер.

Нифига не понял. Ну сохраняй результаты в массив, а потом его разбирай где нужно.

Спустя 21 день, 15 часов, 38 минут, 23 секунды (10.10.2012 - 15:02) Inavin написал(а):
Цитата
Ну сохраняй результаты в массив, а потом его разбирай где нужно.


Если объем результата очень большой (несколько десятков миллионов записей) и не массив не поместится в памяти, то как лучше сделать?

Спустя 8 минут, 14 секунд (10.10.2012 - 15:10) killer8080 написал(а):
Цитата (Inavin @ 10.10.2012 - 15:02)
Если объем результата очень большой (несколько десятков миллионов записей) и не массив не поместится в памяти, то как лучше сделать?

Гигантские объемы данных в поток никто не выводит, значит обрабатывать в цикле, и сразу куда то сохранять результат, ради чего то он же делается.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.