Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: как узнать почему mysqli_query возвращает пустой массив?
echo'тю, #^@*, ошибки нет - есть нулевой результат';}
}
Скрипт выводит следующее:
I Feel Good!! (ту ру ру ру ру)
2*2=4
...блаблабла...
Select ни #^@ не вернул
Почему?
тю, #^@*&, ошибки нет - есть нулевой результат
Вопросы следующие:
1. Как узнать чего ему не нравится?
2. Почему когда я задаю несуществующие логин или пароль - нет сообщения от catch (Exception $e){
echo $e-getCode() . ' : ' .$e->getMessage();
То есть, оно есть, но только если я совсем эпично косану - пропущу порт или ещё что. Если просто неправильная связка логин+пароль - делает вид, что всё хорошо и отсутствует значение в mysqli_connect_errno().
P.S. Буду весьма благодарен, я с php и SQL не работал ни когда. (Добавление)
Да, возможно дело в отсутствии кавычек вокруг `Casetype` но сам вопрос от этого не меняется - почему я вижу просто пустой массив и как посмотреть что именно не так средствами php?
Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2016
Помог: 0 раз(а)
"пъядайзаем йазгавой"(С) Карлсон.
Выяснилось следующее:
Если я пишу
$connect = mysqli_connect("192.168.1.11","user","password","base","3306");
то всё нормально.
А вот если
$connect = mysqli_connect("homeserver.org","user","password","base","3306");
тогда эффект полного молчания без ошибок и с пустыми переменными.
Да, на вопрос 1 из стартпоста я себе ответил - проверять на существование значения $connect. Если вообще "не попал в сервер" - там и будет пусто. Если при этом ещё и нет ошибок - однозначно не попал вообще. Иначе либо будет значение, либо ошибка (это если сервер с той стороны вообще есть и он там, куда я ему кричу).
Возник следующий вопрос: почему homeserver.org, прописанный в hosts на 192.168.1.11 не принимается sqli_connect-ом, тогда как непосредственный IP - принимается.
Может есть какие-то тонкости его написания?
Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2016
Помог: 0 раз(а)
[quote=3d_killer][/quote]
Нет ни какого DNS - это винда. Файл hosts напрямую присваивает IP. Без всяких DNS.
К апачу прекрасно получается обращаться.
А вот с MySQL, видимо, какая-то проблема.
А где такая настройка "пускать только по IP"? Юзер в базе - да, тот привязан к IP, но как может SQL-сервер знать где я нашел его IP в hosts у себя на винте, или на DNS сервере - для меня загадка.
Всё-таки, думаю проблема не с сервером, а с mysqli - он как-то обходит рекомендации файла hosts и пытается найти homeserver.org на ДНС-сервере, и он его находит! такой есть но там нет SQL сервера - я проверял
Вот как бы посмотреть куда он шастает и почему игнорирует hosts... (Добавление)
в настройках сервера значит стоит пускать только по ip, либо днс не работает у вас
вообще ни причем.
Стоп стоп стоп.
Не то.
192.168.1.11 - это САМ SQL сервер. Я НЕ с него захожу.
2 машины в одной локалке. 11 - статический IP - на нем развернут апач и майскуль.
Я захожу с другой машины - клиент не имеет отношения к 11 айпишнику. У клиента - свойIP, он сопоставлен юзверю в базе и всё нормально работает.
Связка такая:
1.11 - сервер.
1.7 - клиент.
Файл windows hosts - локальный заменитель DNS - там написано, что 192.168.1.11 = homeserver.org.
homeserver.org ... их в мире ДВА!!
Есть мой 1.11й IP, а есть где-то там... в интернетах ещё один homeserver.org!
Получается следующая коллизия - если клиент не будет следовать файлу windows hosts, то он полезет искать IP на DNS сервере и начнет долбиться в чей-то сайт, где не установлен SQL. Был бы он там - я бы получал ошибки авторизации, а я получил пустоту без ошибок.
На чьей стороне работает этот скрипт? Я не сильно понимаю в тонкостях строения php и не могу решить эту задачу без такого понимания. (Добавление)
P.S. Всё, понял.
Скрипт работает на стороне сервера.
Я пишу ему localhost и он нормально отрабатывается, так как база там же и стоит на том же сервере.
Естественно, прибить 192.168.1.11 не только у клиента, но и у сервера к localhost я продолбал
Спасибо за участие в беседе. Оно быстрее думается так, когда с кем-то обсуждаешь.
Viper
Отправлено: 29 Марта, 2016 - 00:36:44
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2016
Помог: 0 раз(а)
Viper пишет:
скрипт на стороне сервера.
Совершенно увидел.
И дело было в неправильно настроенном интранете - без DNS-сервера надо в hosts руками всем одно и то же записать было.
Но вопрос породил ещё один вопрос.
Когда я долблюсь из десктопного приложения на С# через коннектор в майскуль сервер , которого нет - я получаю ошибку. Я могу её увидеть - там будет написано, что на той стороне майскуль не установлен.
В php я получил тишину и не присвоенные значения переменных.
Может я где-то не там смотрю?
Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2016
Помог: 0 раз(а)
Ааалилуйя.
Да, это то, что надо. ->connect_error.
Странно, что я впервые вижу этот пример. В основном находится какой-то шлак, типа того, что я выше использовал.
P.S. Интересный эффект образовался. Я прибил гвоздём на хосте IP 192.168.1.11 к homeserver.org.
Теперь всё прекрасно работает кроме... localhost Вместо локалхоста юзер идёт с суффиксом @имя_машины_в_сети.
Поскольку в основном на хостингах сетевой вход в майскуль запрещен - придётся открутить обратно.
Но эксперимент выдался интересным
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.