ФорумРазработкаБазы данных → Проблема с mysqli

Проблема с mysqli

  • armageddance

    Сообщения: 29 Репутация: N Группа: Кто попало

    Spritz 22 мая 2011 г. 18:22

    Есть запрос вида

    $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, по которому идет проверка.

    Теперь, как мне извлечь результат проверки из запроса выше?
    Набросал пока вот такую (нерабочую) конструкцию:

    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 Репутация: N Группа: Кто попало

    Spritz 22 мая 2011 г. 18:46, спустя 24 минуты 7 секунд

    1. Подправить запросы от синтаксических ошибок
    2. Обязательно использовать мульти запрос? ведь можно и разделить на два query
    По всей видимости $row и будет содержать нужные данные из таблицы sessions, и $row=="" лишнее
  • armageddance

    Сообщения: 29 Репутация: N Группа: Кто попало

    Spritz 22 мая 2011 г. 18:59, спустя 13 минут 9 секунд

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

    $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

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 22 мая 2011 г. 19:15, спустя 15 минут 51 секунду

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

    да нет, надо быть проще - просто голову создателю этого куска говна камнем разбивать и все. чтобы больше такое не смог написать. мультизапросы тут не причем
    Сапожник без сапог
  • armageddance

    Сообщения: 29 Репутация: N Группа: Кто попало

    Spritz 22 мая 2011 г. 19:32, спустя 16 минут 53 секунды

    phpdude, данный mysql-код массивный и неуклюжий, согласен. Но в таком случае как надо (или можно) реализовывать желаемое по другому, более правильно?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 22 мая 2011 г. 19:42, спустя 10 минут 42 секунды

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

    Сообщения: 29 Репутация: N Группа: Кто попало

    Spritz 22 мая 2011 г. 19:48, спустя 6 минут 14 секунд

    Хм, на другом авторитетном php-форуме мне наоборот посоветовали как можно больше нагрузки убрать в mysql, якобы, и движок будет быстрее работать, да и эффективнее получится, чем через php все манипуляции реализовывать.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 22 мая 2011 г. 19:54, спустя 5 минут 39 секунд

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


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

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 22 мая 2011 г. 20:09, спустя 14 минут 48 секунд

    авторитетном php-форуме

    ссыль в студию
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 22 мая 2011 г. 20:58, спустя 49 минут

    движок будет быстрее работать

    у вас у всех там чо, сайты с милионными хитами?
  • PatrioT

    Сообщения: 22 Репутация: N Группа: Кто попало

    Spritz 22 мая 2011 г. 21:04, спустя 5 минут 47 секунд

     
    $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

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 22 мая 2011 г. 21:11, спустя 6 минут 55 секунд

    у вас у всех там чо, сайты с милионными хитами?

    да не смеши, тогда они бы знали что самое зло - мускуль xD, а тут они его используют ля арифметики! Космонавты блядь
    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 22 мая 2011 г. 21:33, спустя 21 минуту 58 секунд

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

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 22 мая 2011 г. 21:46, спустя 12 минут 57 секунд

    Sinkler, маркетинг хули
    Сапожник без сапог
  • PatrioT

    Сообщения: 22 Репутация: N Группа: Кто попало

    Spritz 22 мая 2011 г. 23:43, спустя 1 час 57 минут 59 секунд

    тогда они бы знали что самое зло - мускуль xD, а тут они его используют ля арифметики!

    Оу, передомной сейчас человек аля JOIN`ы и прочее - говно, используев бд лишь для key=>value, или показалось ? ОО

Пожалуйста, авторизуйтесь, чтобы написать комментарий!