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 возвращает пустой массив?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
trinkoo
Отправлено: 28 Марта, 2016 - 13:22:08
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2016  


Помог: 0 раз(а)




Есть php+MySQL связка на локальной машине внутри сетки. Сервера видны, phpMyAdmin и dbForge заходят штатно, сайты крутятся.

Есть БД, есть php скрипт, на котором я учусь работать с этой всей байдой.

PHP:
скопировать код в буфер обмена
  1.  
  2.  /*.. начало упускаем, переменные там существуют и имеют корректные проверенные значения*/
  3. try {
  4.    $connect = mysqli_connect($host,$user,$pwd,$port,$base);
  5.     /* $connect = mysqli_connect(connectstr_namig($host,$user,$pwd,$port,$base));*/
  6.  }
  7.  catch (Exception $e){
  8.      echo $e-getCode() . ' : ' .$e->getMessage();
  9.  }
  10.  
  11.      echo "<br/> Ну #^@*&...  ";
  12.  }
  13.  else{
  14.      echo "<br/>";
  15.      echo "I Feel Good!! (ту ру ру ру ру) <br/>";
  16.      echo '2*2='.(2*2);
  17.  }
  18. echo connectstr_namig($host, $user, $pwd, $port, $base);
  19. echo "<br/>";
  20. echo "<br/>";
  21.  
  22. $column='ID';
  23. $cvalue='1';
  24.  
  25. if ($result = mysqli_query($connect,'SELECT * FROM Casetype ORDER BY ID;' ))
  26. {
  27.     echo 'Select вернул %d строк'.  mysqli_num_rows($result);
  28. }
  29. else
  30. {
  31.     echo 'Select ни #^@ не вернул'." <br>";
  32.     echo "Почему?"." <br>";
  33.     {
  34.         printf("   Ага, код ошибки:", mysqli_connect_error());
  35.     }
  36.     else{
  37.     echo 'тю, #^@*, ошибки нет  - есть нулевой результат';}
  38. }  

Скрипт выводит следующее:

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?

(Отредактировано автором: 28 Марта, 2016 - 13:26:40)

 
 Top
trinkoo
Отправлено: 28 Марта, 2016 - 23:45:45
Post Id


Новичок


Покинул форум
Сообщений всего: 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 - принимается.
Может есть какие-то тонкости его написания?

(Отредактировано автором: 28 Марта, 2016 - 23:56:45)

 
 Top
3d_killer
Отправлено: 29 Марта, 2016 - 00:01:21
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




в настройках сервера значит стоит пускать только по ip, либо днс не работает у вас
 
My status
 Top
Viper
Отправлено: 29 Марта, 2016 - 00:11:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




trinkoo пишет:
Возник следующий вопрос
потому что найдите отличия
CODE (htmlphp):
скопировать код в буфер обмена
  1. user:password@192.168.1.11

и
CODE (htmlphp):
скопировать код в буфер обмена
  1. user:password@homeserver.org

(Добавление)
3d_killer пишет:
в настройках сервера значит стоит пускать только по ip, либо днс не работает у вас
вообще ни причем.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
trinkoo
Отправлено: 29 Марта, 2016 - 00:13:45
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2016  


Помог: 0 раз(а)




[quote=3d_killer][/quote]
Нет ни какого DNS - это винда. Файл hosts напрямую присваивает IP. Без всяких DNS.
К апачу прекрасно получается обращаться.
А вот с MySQL, видимо, какая-то проблема.

А где такая настройка "пускать только по IP"? Юзер в базе - да, тот привязан к IP, но как может SQL-сервер знать где я нашел его IP в hosts у себя на винте, или на DNS сервере - для меня загадка.

Всё-таки, думаю проблема не с сервером, а с mysqli - он как-то обходит рекомендации файла hosts и пытается найти homeserver.org на ДНС-сервере, и он его находит! такой есть но там нет SQL сервера - я проверял Ха-ха

Вот как бы посмотреть куда он шастает и почему игнорирует hosts...
(Добавление)
Viper пишет:
trinkoo пишет:
Возник следующий вопрос
потому что найдите отличия
CODE (htmlphp):
скопировать код в буфер обмена
  1. user:password@192.168.1.11

и
CODE (htmlphp):
скопировать код в буфер обмена
  1. user:password@homeserver.org

(Добавление)
3d_killer пишет:
в настройках сервера значит стоит пускать только по 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 я продолбал Радость

Спасибо за участие в беседе. Оно быстрее думается так, когда с кем-то обсуждаешь.
 
 Top
Viper
Отправлено: 29 Марта, 2016 - 00:36:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




trinkoo пишет:
На чьей стороне работает этот скрипт?
скрипт на стороне сервера.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
trinkoo
Отправлено: 29 Марта, 2016 - 01:21:49
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2016  


Помог: 0 раз(а)




Viper пишет:
скрипт на стороне сервера.

Совершенно увидел.
И дело было в неправильно настроенном интранете - без DNS-сервера надо в hosts руками всем одно и то же записать было.
Но вопрос породил ещё один вопрос.
Когда я долблюсь из десктопного приложения на С# через коннектор в майскуль сервер , которого нет - я получаю ошибку. Я могу её увидеть - там будет написано, что на той стороне майскуль не установлен.

В php я получил тишину и не присвоенные значения переменных.
Может я где-то не там смотрю?

Как узнать, что на той стороне не запущен сервер?

(Отредактировано автором: 29 Марта, 2016 - 01:22:25)

 
 Top
Viper
Отправлено: 29 Марта, 2016 - 10:13:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




try/catch для mysqli_connect не имеет смысла. Функция не кидает исключений.
пример внимательно смотрите http://php.net/manual/en/mysqli....onnect-error.php


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
trinkoo
Отправлено: 29 Марта, 2016 - 20:23:19
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2016  


Помог: 0 раз(а)




Ааалилуйя.
Да, это то, что надо. ->connect_error.
Странно, что я впервые вижу этот пример. В основном находится какой-то шлак, типа того, что я выше использовал.

P.S. Интересный эффект образовался. Я прибил гвоздём на хосте IP 192.168.1.11 к homeserver.org.

Теперь всё прекрасно работает кроме... localhost Улыбка Вместо локалхоста юзер идёт с суффиксом @имя_машины_в_сети.

Поскольку в основном на хостингах сетевой вход в майскуль запрещен - придётся открутить обратно.
Но эксперимент выдался интересным Улыбка

(Отредактировано автором: 29 Марта, 2016 - 20:28:03)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB