Этот сайт не наркоманов. Это сайт программистов. Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 25 Май, 2012, 08:46:58

Страниц: [1] 2
Печать
Автор Тема: Проблема с mysqli  (Прочитано 413 раз)
0 Пользователей и 1 Гость смотрят эту тему.
armageddance    ↓ 
22 Май, 2011, 06:22:00
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 29
Сила слова: 0

Есть запрос вида
 
PHP
$check_session_query="SELECT @date:= CAST(CONCAT(CAST(YEAR(DATE_ADD(NOW(), INTERVAL '$session_day' DAY)) AS CHAR), '-',
                                CAST(MONTH(DATE_ADD(NOW(), INTERVAL '$session_day' DAY)) AS CHAR), '-',
                                CAST(DAYOFMONTH(DATE_ADD(NOW(), INTERVAL '$session_day' DAY)) AS CHAR), ' ', '09:00:00') AS DATETIME);
                                SELECT FROM sessions * WHERE DATE(timer)=DATE(@date);"
;
                                mysqli_multi_query($connector, $check_session_query);

Он проверяет нет ли в базе строк вида [id строки] [2011 05 22] [прочие данные], где собственно дата - это и есть timer, по которому идет проверка.
 
Теперь, как мне извлечь результат проверки из запроса выше?
Набросал пока вот такую (нерабочую) конструкцию:
 
PHP
do {
                                  // получаем ответ на запрос из результирующего набора
                                  $check_session_result = mysqli_use_result($connector);
 
                                  while ($row = mysqli_fetch_array($check_session_result))
                                    {
                                      if($row=="")// обрабатываем данные
                                      $error_to_display.="Расписание на данную дату еще не сформированно.";
                                      if($row!="")
                                          while()
                                        {
                                               !!!Что здесь должно быть? Как мне извлечь строки вида [2011 05 22 9:00] 1 1 1 1 отсюда?
                                        }
                                    } 
 
                                  //осовобождаем память
                                  mysqli_free_result($check_session_result)
 
                                  // переходим на следующий ответ из результирующего набора
                                  // если следующего ответа нет - цикл завершается
                                  } while (mysqli_next_result($connector));
Записан
PatrioT    ↓ 
22 Май, 2011, 06:46:07 , спустя 24 минуты 7 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 22
Сила слова: 0

1. Подправить запросы от синтаксических ошибок
2. Обязательно использовать мульти запрос? ведь можно и разделить на два query
По всей видимости $row и будет содержать нужные данные из таблицы sessions, и $row=="" лишнее
Записан
armageddance    ↓ 
22 Май, 2011, 06:59:16 , спустя 13 минут 9 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 29
Сила слова: 0

Мультизапросы обязательно, потому что в коде встречаются и вот такие гиганты, которые без множественных запросов очень муторно реализовывать:
 
$set_rasp_query = "SELECT @date:= CAST(CONCAT(CAST(YEAR(DATE_ADD(NOW(), INTERVAL '$session_day' DAY)) AS CHAR), '-',
                                            CAST(MONTH(DATE_ADD(NOW(), INTERVAL '$session_day' DAY)) AS CHAR), '-',
                                            CAST(DAYOFMONTH(DATE_ADD(NOW(), INTERVAL '$session_day' DAY)) AS CHAR), ' ', '09:00:00') AS DATETIME);
                                            SELECT @session1:= DATE_ADD(@date, INTERVAL '00:0' MINUTE_SECOND);
                                            SELECT @session2:= DATE_ADD(@date, INTERVAL '45:0' MINUTE_SECOND);
                                            SELECT @session3:= DATE_ADD(@date, INTERVAL '90:0' MINUTE_SECOND);
                                            SELECT @session4:= DATE_ADD(@date, INTERVAL '135:0' MINUTE_SECOND);
                                            SELECT @session5:= DATE_ADD(@date, INTERVAL '180:0' MINUTE_SECOND);
                                            SELECT @session6:= DATE_ADD(@date, INTERVAL '225:0' MINUTE_SECOND);
                                            SELECT @session7:= DATE_ADD(@date, INTERVAL '270:0' MINUTE_SECOND);
                                            SELECT @session8:= DATE_ADD(@date, INTERVAL '315:0' MINUTE_SECOND);
                                            SELECT @session9:= DATE_ADD(@date, INTERVAL '360:0' MINUTE_SECOND);
                                            SELECT @session10:= DATE_ADD(@date, INTERVAL '415:0' MINUTE_SECOND);
                                            SELECT @session11:= DATE_ADD(@date, INTERVAL '450:0' MINUTE_SECOND);
                                            SELECT @session12:= DATE_ADD(@date, INTERVAL '495:0' MINUTE_SECOND);
                                            INSERT INTO sessions (timer, admin_id, master_id, session_type) VALUES (@session1, 1, 1, 1),
                                                                                                (@session2, 1, 1, 1),
                                                                                                (@session3, 1, 1, 1),
                                                                                                (@session4, 1, 1, 1),
                                                                                                (@session5, 1, 1, 1),
                                                                                                (@session6, 1, 1, 1),
                                                                                                (@session7, 1, 1, 1),
                                                                                                (@session8, 1, 1, 1),
                                                                                                (@session9, 1, 1, 1),
                                                                                                (@session10, 1, 1, 1),
                                                                                                (@session11, 1, 1, 1),
                                                                                                (@session12, 1, 1, 1);";
                                        $set_rasp_result = mysqli_multi_query($connector, $set_rasp_query);
Записан
phpdude    ↓ 
22 Май, 2011, 07:15:07 , спустя 15 минут 51 секунду
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

Мультизапросы обязательно, потому что в коде встречаются и вот такие гиганты, которые без множественных запросов очень муторно реализовывать:
да нет, надо быть проще - просто голову создателю этого куска говна камнем разбивать и все. чтобы больше такое не смог написать. мультизапросы тут не причем
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
armageddance    ↓ 
22 Май, 2011, 07:32:00 , спустя 16 минут 53 секунды
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 29
Сила слова: 0

phpdude, данный mysql-код массивный и неуклюжий, согласен. Но в таком случае как надо (или можно) реализовывать желаемое по другому, более правильно?
Записан
phpdude    ↓ 
22 Май, 2011, 07:42:42 , спустя 10 минут 42 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: 20790
Сила слова: 1.66

armageddance, простой запрос и формирование даты на пхп и простой форич будет уже нагляднее и проще для поддержки
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
armageddance    ↓ 
22 Май, 2011, 07:48:56 , спустя 6 минут 14 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 29
Сила слова: 0

Хм, на другом авторитетном php-форуме мне наоборот посоветовали как можно больше нагрузки убрать в mysql, якобы, и движок будет быстрее работать, да и эффективнее получится, чем через php все манипуляции реализовывать.
Записан
phpdude    ↓ 
22 Май, 2011, 07:54:35 , спустя 5 минут 39 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

Хм, на другом авторитетном php-форуме мне наоборот посоветовали как можно больше нагрузки убрать в mysql

выполняй чо безмозгло ))))))))))))))) что я могу сказать
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
kostyl    ↓ 
22 Май, 2011, 08:09:23 , спустя 14 минут 48 секунд
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3522
Сила слова: 1.7

авторитетном php-форуме
ссыль в студию
Записан

качество жизни обратно пропорционально количеству лени
KaFe    ↓ 
22 Май, 2011, 08:36:06 , спустя 26 минут 43 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Сраный Тролль

Карма: -13346
Сообщений: 1727
Сила слова: -772.79


авторитетном php-форуме
ссыль в студию
+1
Записан

Sinkler    ↓ 
22 Май, 2011, 08:58:23 , спустя 22 минуты 17 секунд
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 73
Сообщений: 6805
Сила слова: 1.07

движок будет быстрее работать
у вас у всех там чо, сайты с милионными хитами?
Записан

PatrioT    ↓ 
22 Май, 2011, 09:04:10 , спустя 5 минут 47 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 22
Сила слова: 0

SQL

 $set_rasp_query = "SELECT @date:= CAST(CONCAT(CAST(YEAR(DATE_ADD(NOW(), INTERVAL '$session_day' DAY)) AS CHAR), '-',
                                             CAST(MONTH(DATE_ADD(NOW(), INTERVAL '$session_day' DAY)) AS CHAR), '-',
                                             CAST(DAYOFMONTH(DATE_ADD(NOW(), INTERVAL '$session_day' DAY)) AS CHAR), ' ', '09:00:00') AS DATETIME);
                                             SELECT @session1:= DATE_ADD(@date, INTERVAL '00:0' MINUTE_SECOND);
                                             SELECT @session2:= DATE_ADD(@date, INTERVAL '45:0' MINUTE_SECOND);
                                             SELECT @session3:= DATE_ADD(@date, INTERVAL '90:0' MINUTE_SECOND);
                                             SELECT @session4:= DATE_ADD(@date, INTERVAL '135:0' MINUTE_SECOND);
                                             SELECT @session5:= DATE_ADD(@date, INTERVAL '180:0' MINUTE_SECOND);
                                             SELECT @session6:= DATE_ADD(@date, INTERVAL '225:0' MINUTE_SECOND);
                                             SELECT @session7:= DATE_ADD(@date, INTERVAL '270:0' MINUTE_SECOND);
                                             SELECT @session8:= DATE_ADD(@date, INTERVAL '315:0' MINUTE_SECOND);
                                             SELECT @session9:= DATE_ADD(@date, INTERVAL '360:0' MINUTE_SECOND);
                                             SELECT @session10:= DATE_ADD(@date, INTERVAL '415:0' MINUTE_SECOND);
                                             SELECT @session11:= DATE_ADD(@date, INTERVAL '450:0' MINUTE_SECOND);
                                             SELECT @session12:= DATE_ADD(@date, INTERVAL '495:0' MINUTE_SECOND);
                                             INSERT INTO sessions (timer, admin_id, master_id, session_type) VALUES (@session1, 1, 1, 1),
                                                                                                 (@session2, 1, 1, 1),
                                                                                                 (@session3, 1, 1, 1),
                                                                                                 (@session4, 1, 1, 1),
                                                                                                 (@session5, 1, 1, 1),
                                                                                                 (@session6, 1, 1, 1),
                                                                                                 (@session7, 1, 1, 1),
                                                                                                 (@session8, 1, 1, 1),
                                                                                                 (@session9, 1, 1, 1),
                                                                                                 (@session10, 1, 1, 1),
                                                                                                 (@session11, 1, 1, 1),
                                                                                                 (@session12, 1, 1, 1);"
;
если это снижение нагрузки на mysql, то я космонафт в 3 поколение
Записан
phpdude    ↓ 
22 Май, 2011, 09:11:05 , спустя 6 минут 55 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

у вас у всех там чо, сайты с милионными хитами?
да не смеши, тогда они бы знали что самое зло - мускуль xD, а тут они его используют ля арифметики! Космонавты блядь
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Sinkler    ↓ 
22 Май, 2011, 09:33:03 , спустя 21 минуту 58 секунд
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 73
Сообщений: 6805
Сила слова: 1.07

все чаще вижу и не понимаю, когда оптимизацию вперед всего выносят
Записан

phpdude    ↓ 
22 Май, 2011, 09:46:00 , спустя 12 минут 57 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

Sinkler, маркетинг хули
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Страниц: [1] 2
Печать
 

Перейти в:  

Этот топик скрыли: adw0rd, mario