Здравтвуйте , в бд имею таблицу rooms 1 поле: id (тип - int, автоинкремент, первичный, NOT NULL) 2 поле: first(тип - VARCHAR(60)) 2 поле: second(тип - VARCHAR(60)) и есть скрипт php Код (Text): <? $mysql_username = "цуацпцупцупцуп"; $mysql_password = "цупцпмыфывфа"; $mysql_host = "localhost"; $mysql_connect = mysql_connect($mysql_host, $mysql_username, $mysql_password); if ($mysql_connect) mysql_select_db("йупцпццупцу"); $id = $_POST["id"]; $nearid = $_POST["nearid"]; $sender = $_POST["sender"]; //регистрация клиента if (isset($_POST["id"]) && isset($_POST["nearid"])) { $result = mysql_query("DELETE FROM rooms WHERE first = '$id'"); $result = mysql_query("DELETE FROM rooms WHERE second = '$id'"); $result = mysql_query("SELECT * FROM users_info WHERE id = '" . $_POST["id"] . "'"); $myrow = mysql_fetch_array($result); if (!mysql_num_rows($result)) { $q = mysql_query("INSERT INTO users_info VALUES('" . $_POST["id"] . ".','$nearid',NOW());"); //echo "Пользователь зарегестрирован"; } else mysql_query("UPDATE users_info SET date = NOW(), nearid = '$nearid' WHERE id = '$id'"); } //поиск другого клиента if (isset($_POST["id"]) && isset($_POST["search"])) { //echo "Поиск клиента"; $result = mysql_query("DELETE FROM rooms WHERE second ='$id'");//удаляем все записи где second = id $result = mysql_query("SELECT id,first FROM rooms WHERE second IS NULL AND first <> '$id'"); $SeconClient = mysql_fetch_object($result);//ищем другого клиента ожидающего партнера //echo "\nСтрок" . $row; $result = mysql_query("SELECT `id`,`first` FROM `rooms` WHERE `first` = '$id' AND `second` IS NULL;"); $clientroom = mysql_fetch_object($result);//данный клиент уже создал комнату ? if ($clientroom->first == "") //если клиент еще не создал комнату { if ($SeconClient -> first != "") //если какой то клиент находиться в поиске партнера то связываем его с данным клиентом { $first = $SeconClient->first; $result = mysql_query("SELECT id,first FROM rooms WHERE first = '$first'"); //AND TIME_TO_SEC(TIMEDIFF(NOW(),date))>59"); //echo "Заполняем поле second данным ID".$id.$first; $q = mysql_query("UPDATE rooms SET second = '$id' WHERE first = '$first'"); $q = mysql_query("SELECT nearid FROM users_info WHERE id = '$first'"); $resu = mysql_fetch_object($q); $ar = array ('mode' => "add",'nearid' => $resu->nearid); $row2 = mysql_fetch_object($result); echo json_encode($ar); } else { //Создаем новую комнату $q = mysql_query("INSERT INTO rooms (first,second) VALUES('$id',NULL);"); $json = array('mode' => "create"); echo json_encode($json); } }else { // случае когда комната создана //echo "room was created"; $result = mysql_query("SELECT nearid FROM users_info WHERE id = '$id'"); $row = mysql_fetch_object($result); $json = array ('mode' => "research"); echo json_encode($json); } } echo mysql_error(); ?> Собственно проблема вот в чем Код (Text): //Создаем новую комнату $q = mysql_query("INSERT INTO rooms (first,second) VALUES('$id',NULL);"); $json = array('mode' => "create"); echo json_encode($json); иногда работает а иногда нет данный запрос в MySQL, в PHP я новичок, да и MySQL echo mysql_error() - говорит, что ошибок нет, сомнений нет в том, что данный участок скрипта работает, т.к echo json_encode($json);. Заранее спасибо за помощь ! Также заметил одну особенность: к примеру в таблицу все таки вставились данные с id = 8, после 3-х безрезультатных INSTER-ов данные снова вставляются но id равен не 9-и как ожидалось, а 12.
Странно попробуй залогировать свой sql. Может данные ты не передаешь. Включи вывод ошибок. Ну и что б наверняка проверяй лог апача.
Транзакции не используются, по поводу логов сейчас попробую Добавлено спустя 44 минуты 37 секунд: Скрипт тестировал на удаленном хостинге, при тестировании локально данной проблемы не наблюдаю, хотел обратиться в службу поддержки с целью просмотра логамов, но т.к. хостинг бесплатный, мне к ней нет доступа. Всем спасибо
погоди-ка. у тебя поле id автоинкрементное, но ты его при вставке сам присваиваешь. нахрена? чего стОят твои я уже молчу о том, что этот же id используется для двух других полей. бессмыслица. зачем искать ошибки там где нет смысла.
Я его не присваиваю, переменная id в PHP скрите - это имя пользователя, название образованно от vkid, а в таблице это просто идентификатор комнаты, в таблицу я вставляю поле first = 'user' к примеру,second = NULL id в данном сообщении имеется ввиду из базы данных, а не из поля first запроса INSERT Добавлено спустя 8 минут 57 секунд: Извиняюсь за говнокод, на данный момент срочно нужно сделать основной функционал, а дальше рефакторинг