Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2019, 09:00   #1
antonb770
Пользователь
 
Регистрация: 27.04.2015
Сообщений: 28
По умолчанию НЕ Работает если select, insert в одном скрипте,

Приветствую, есть скрипт (кусок):
Код:
$db = new mysqli($DB_SERVER, $DB_USER_NAME, $DB_USER_PASS, $DB_NAME);
if ($db->connect_error) exit;
$query = "SELECT login FROM users WHERE login=? LIMIT 1";
if(!($statement = $db->prepare($query))) exit;
if(!$statement->bind_param("s", $login)) exit;
if(!$statement->execute()) exit;
if(!$statement->bind_result($login_bd)) exit;
if(!$statement->fetch()) exit;
$statement->close();
$db->close();
if (isset($login_bd)) exit('логин занят');

$db1 = new mysqli($DB_SERVER, $DB_USER_NAME, $DB_USER_PASS, $DB_NAME);
if ($db1->connect_error) exit;
$query1 = "INSERT INTO users (id, login, password, email) VALUES (?, ?, ?, ?)";
if (!($statement1 = $db1->prepare($query1))) exit;
if (!($statement1->bind_param("isss", $id, $login, $password, $email))) exit;
if($statement1->execute()) $result = "0777"; else $result = "0666";
$statement1->close();
$db1->close();

echo $result;
При добавлении пользователя делаем проверку на логин есть или нет в бд,
вопрос: НЕ Работает если проверка и запись (select, insert) в одном скрипте, если в разных все отлично работает. Не могу понять почему??? Спасибо.
Изображения
Тип файла: jpg Снимок экрана от 2019-12-30 12-58-38.jpg (95.0 Кб, 2 просмотров)
antonb770 вне форума Ответить с цитированием
Старый 30.12.2019, 13:12   #2
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Код:
$query1
Прописан ли запрос для этой переменной или только для $query
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 30.12.2019, 14:19   #3
antonb770
Пользователь
 
Регистрация: 27.04.2015
Сообщений: 28
По умолчанию

Алексей_2012, да стандартный класс mysqli думаю от имени переменной там не зависил (я сам класс не смотрел). Проблемка в том что если select и insert в разные скрипты раскидываем они работают... А в одном не хотят - загадка века для меня)
antonb770 вне форума Ответить с цитированием
Старый 30.12.2019, 14:43   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,542
По умолчанию

Что значит не работает? Какие-то ошибки появляются или что?
P.S. Стиль написания кода просто ужасен. Зачем два раза устанавливать соединение с СУБД?
Arigato вне форума Ответить с цитированием
Старый 30.12.2019, 15:08   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,155
По умолчанию

100% на каком то exit из той туевой хучи выходит
сделайте выход с параметрами и поймете где именно
с самого первого exit("1") следующий exit("2") итд
после запуска он вам выдаст номер - где завершил работу, я ставлю на -
Код:
if(!$statement->fetch()) exit;
ибо ну не нашел он пользователя, условие выполнилось так ка ответ пустой - усе...

Последний раз редактировалось ADSoft; 30.12.2019 в 15:11.
ADSoft вне форума Ответить с цитированием
Старый 30.12.2019, 15:09   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,155
По умолчанию

а код - да отстой, там грамотно можно и нужно в 3-4строчуи оформить все без этого леса с exit
ADSoft вне форума Ответить с цитированием
Старый 30.12.2019, 15:37   #7
antonb770
Пользователь
 
Регистрация: 27.04.2015
Сообщений: 28
По умолчанию

ADSoft, Да, все верно - этот момент не заметил if(!$statement->fetch()) exit;
А что код отстой - это все ясно, лес exit для эксперементов дальнейших - не продакшен)))
Всем спасибо! Тему можно закрывать.
antonb770 вне форума Ответить с цитированием
Старый 30.12.2019, 15:42   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,542
По умолчанию

Цитата:
Сообщение от antonb770 Посмотреть сообщение
лес exit для эксперементов дальнейших
А зачем дважды соединяться с базой данных?
Arigato вне форума Ответить с цитированием
Старый 30.12.2019, 15:45   #9
antonb770
Пользователь
 
Регистрация: 27.04.2015
Сообщений: 28
По умолчанию

Arigato, да не знал на что грешить для чистоты 2 соединения. Сейчас уже одно. Спасибо.
antonb770 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Insert с подзапросом select if Parallelogram SQL, базы данных 9 26.06.2018 17:06
множество select в одном insert ssm116 SQL, базы данных 5 26.09.2017 16:21
Insert + Select = You can't specify target table -Jack- SQL, базы данных 10 02.11.2016 12:57
INSERT Value( select) Marina8 Помощь студентам 5 24.04.2012 13:03
Запрос вида Insert..Select MySQL Svap SQL, базы данных 3 11.01.2011 19:11