За последние 24 часа нас посетили 15869 программистов и 1641 робот. Сейчас ищут 1039 программистов ...

не срабатывает INSTERT

Тема в разделе "MySQL", создана пользователем kirsanv43, 27 июл 2013.

  1. kirsanv43

    kirsanv43 Новичок

    С нами с:
    27 июл 2013
    Сообщения:
    3
    Симпатии:
    0
    Здравтвуйте , в бд имею таблицу rooms
    1 поле: id (тип - int, автоинкремент, первичный, NOT NULL)
    2 поле: first(тип - VARCHAR(60))
    2 поле: second(тип - VARCHAR(60))

    и есть скрипт php
    Код (Text):
    1.  
    2. <?
    3. $mysql_username = "цуацпцупцупцуп";
    4. $mysql_password = "цупцпмыфывфа";
    5. $mysql_host = "localhost";
    6. $mysql_connect = mysql_connect($mysql_host, $mysql_username, $mysql_password);
    7. if ($mysql_connect)
    8.     mysql_select_db("йупцпццупцу");
    9.  
    10. $id = $_POST["id"];
    11. $nearid = $_POST["nearid"];
    12. $sender = $_POST["sender"];
    13.  
    14.  
    15.  
    16.  
    17. //регистрация клиента
    18. if (isset($_POST["id"]) && isset($_POST["nearid"])) {
    19.     $result = mysql_query("DELETE FROM rooms WHERE first = '$id'");
    20.     $result = mysql_query("DELETE FROM rooms WHERE second = '$id'");
    21.  
    22.     $result = mysql_query("SELECT * FROM users_info WHERE id = '" . $_POST["id"] . "'");
    23.     $myrow = mysql_fetch_array($result);
    24.     if (!mysql_num_rows($result)) {
    25.         $q = mysql_query("INSERT INTO users_info  VALUES('" . $_POST["id"] . ".','$nearid',NOW());");
    26.         //echo "Пользователь зарегестрирован";
    27.     } else
    28.         mysql_query("UPDATE users_info SET date = NOW(), nearid = '$nearid' WHERE id = '$id'");
    29. }
    30.  
    31.  
    32. //поиск другого клиента
    33. if (isset($_POST["id"]) && isset($_POST["search"])) {
    34.     //echo "Поиск клиента";
    35.     $result = mysql_query("DELETE FROM rooms WHERE second ='$id'");//удаляем все записи где second = id
    36.     $result = mysql_query("SELECT id,first FROM rooms WHERE second IS NULL AND first <> '$id'");
    37.     $SeconClient = mysql_fetch_object($result);//ищем другого клиента ожидающего партнера
    38.     //echo "\nСтрок" . $row;
    39.     $result = mysql_query("SELECT `id`,`first` FROM `rooms` WHERE `first` = '$id' AND `second` IS NULL;");
    40.     $clientroom = mysql_fetch_object($result);//данный клиент уже создал комнату ?
    41.     if ($clientroom->first == "") //если клиент еще не создал комнату
    42.     {
    43.         if ($SeconClient -> first != "") //если какой то клиент находиться в поиске партнера то связываем его с данным клиентом
    44.         {
    45.             $first = $SeconClient->first;
    46.             $result = mysql_query("SELECT id,first FROM rooms WHERE first = '$first'");  
    47.                                                     //AND TIME_TO_SEC(TIMEDIFF(NOW(),date))>59");
    48.             //echo "Заполняем поле second данным ID".$id.$first;
    49.             $q = mysql_query("UPDATE rooms SET second = '$id' WHERE first = '$first'");
    50.             $q = mysql_query("SELECT nearid FROM users_info WHERE id = '$first'");
    51.             $resu = mysql_fetch_object($q);
    52.             $ar = array ('mode' => "add",'nearid' => $resu->nearid);
    53.             $row2 = mysql_fetch_object($result);
    54.             echo json_encode($ar);
    55.         } else {
    56.             //Создаем новую комнату  
    57.             $q = mysql_query("INSERT INTO rooms (first,second)   VALUES('$id',NULL);");
    58.             $json = array('mode' => "create");
    59.             echo json_encode($json);
    60.         }
    61.     }else
    62.     {
    63.         // случае когда комната создана
    64.         //echo "room was created";
    65.         $result = mysql_query("SELECT nearid FROM users_info WHERE id = '$id'");
    66.         $row = mysql_fetch_object($result);
    67.         $json = array ('mode' => "research");
    68.         echo json_encode($json);
    69.     }
    70. }
    71. echo mysql_error();
    72. ?>
    Собственно проблема вот в чем
    Код (Text):
    1. //Создаем новую комнату  
    2.             $q = mysql_query("INSERT INTO rooms (first,second)   VALUES('$id',NULL);");
    3.             $json = array('mode' => "create");
    4.             echo json_encode($json);
    иногда работает а иногда нет данный запрос в MySQL, в PHP я новичок, да и MySQL
    echo mysql_error() - говорит, что ошибок нет, сомнений нет в том, что данный участок скрипта работает, т.к echo json_encode($json);.
    Заранее спасибо за помощь !



    Также заметил одну особенность:
    к примеру в таблицу все таки вставились данные с id = 8, после 3-х безрезультатных INSTER-ов данные снова вставляются но id равен не 9-и как ожидалось, а 12.
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Странно попробуй залогировать свой sql. Может данные ты не передаешь.
    Включи вывод ошибок.
    Ну и что б наверняка проверяй лог апача.
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    используются транзакции?
     
  4. kirsanv43

    kirsanv43 Новичок

    С нами с:
    27 июл 2013
    Сообщения:
    3
    Симпатии:
    0
    Транзакции не используются, по поводу логов сейчас попробую

    Добавлено спустя 44 минуты 37 секунд:
    Скрипт тестировал на удаленном хостинге, при тестировании локально данной проблемы не наблюдаю, хотел обратиться в службу поддержки с целью просмотра логамов, но т.к. хостинг бесплатный, мне к ней нет доступа. Всем спасибо
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    погоди-ка. у тебя поле id автоинкрементное, но ты его при вставке сам присваиваешь. нахрена? чего стОят твои
    я уже молчу о том, что этот же id используется для двух других полей. бессмыслица. зачем искать ошибки там где нет смысла.
     
  6. kirsanv43

    kirsanv43 Новичок

    С нами с:
    27 июл 2013
    Сообщения:
    3
    Симпатии:
    0
    Я его не присваиваю, переменная id в PHP скрите - это имя пользователя, название образованно от vkid, а в таблице это просто идентификатор комнаты,
    в таблицу я вставляю поле first = 'user' к примеру,second = NULL

    id в данном сообщении имеется ввиду из базы данных, а не из поля first запроса INSERT

    Добавлено спустя 8 минут 57 секунд:
    Извиняюсь за говнокод, на данный момент срочно нужно сделать основной функционал, а дальше рефакторинг