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 :: Почему не работает запрос?

 PHP.SU

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


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

> Описание: Запрос работает в phpMyAdmin и не работает со страницы сайта.
maxapet
Отправлено: 04 Сентября, 2016 - 09:40:26
Post Id


Новичок


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


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




Подключение к MySQL проходит нормально, а запрос возвращает 0 записей. Этот же запрос через phpMyAdmin выбирает необходимые записи.
PHP:
скопировать код в буфер обмена
  1.  
  2.         $userId = "{15EE63AC-F070-4BEA-BB78-4E6687A1ED79}"
  3.         $widgetId = "{00000000-0000-0000-0000-000000000000}";
  4.  
  5.         $mysqli = new mysqli("localhost", "user", "userpwd", "mydb");
  6.         if($mysqli->connect_errno){
  7.                 echo "Ошибка при подключении к БД. Код ошибки: ".$mysqli->connect_errno." Описание ошибки: ".$mysqli->connect_error;
  8.                 exit;
  9.         }
  10.        
  11.         $query = "SELECT * FROM emails WHERE CustomerId = '{$userId }' AND WidgetId = '{$widgetId}'";
  12.         $result = $mysqli->query($query)
  13.                 or die("Ошибка при загрузке настроек пользователя. Описание ошибки: " . $mysqli->error);
  14.         echo 'Выбрано строк: ' . $mysqli->num_rows;
  15.  

В чём может быть дело?
 
 Top
Sail
Отправлено: 04 Сентября, 2016 - 12:07:25
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


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




maxapet пишет:
Этот же запрос через phpMyAdmin выбирает необходимые записи

echo $query;
И сравнивайте с тем, что ручками выполняете.
 
 Top
maxapet
Отправлено: 04 Сентября, 2016 - 12:14:01
Post Id


Новичок


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


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




Я так и сделал. Подставил запрос в phpMyAdmin, и он отработал нормально.
 
 Top
Fart
Отправлено: 04 Сентября, 2016 - 13:34:10
Post Id



Посетитель


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


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




'{$userId }'

для чего вообще фигурные скобки и нужны ли они повторно?
данные записаны в бд такого вида?
{{...}}
или
{...}
и пробел разве нужен при поиске id?
 
 Top
maxapet
Отправлено: 04 Сентября, 2016 - 13:51:10
Post Id


Новичок


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


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




Внешние фигурные скобки нужны, чтобы вставить значение переменной в строку, в внутренние - в таком виде guid генерится. В БД guid хранится с фигурными скобками.
А про пробел я не понял - в каком месте он лишний?
 
 Top
OrmaJever Модератор
Отправлено: 04 Сентября, 2016 - 14:05:23
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




maxapet пишет:
а запрос возвращает 0 записей

maxapet пишет:
В чём может быть дело?

Побуду капитаном очевидностью, причина может быть одна - в таблице нет записей удовлетворяющих данное условие.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
maxapet
Отправлено: 04 Сентября, 2016 - 17:20:34
Post Id


Новичок


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


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




OrmaJever пишет:
Побуду капитаном очевидностью, причина может быть одна - в таблице нет записей удовлетворяющих данное условие.

Я ведь написал: один и тот же запрос. Я вывожу строку запроса через echo, копирую строку запроса, и вставляю её в phpMyAdmin. В phphMyAdmin запрос возвращает строки, со страницы сайта - нет.
 
 Top
Fart
Отправлено: 04 Сентября, 2016 - 18:14:18
Post Id



Посетитель


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


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




Покажи строчку запроса mysql после вывода результата введенного в phpmyadmin
(Добавление)
А пробел существует и он учитывается. в примере:
твоем


А должен


(Добавление)
Несмотря на то, что пробела у это нет



Если пробел не причем и у тебя есть согласно примеру данные, значит по любому вывод нулевой в запросе и записей нет

(Отредактировано автором: 04 Сентября, 2016 - 18:23:34)

 
 Top
maxapet
Отправлено: 05 Сентября, 2016 - 01:57:51
Post Id


Новичок


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


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




За пробел спасибо, увидел. Убрал, но не помогло.
Fart пишет:
Покажи строчку запроса mysql после вывода результата введенного в phpmyadmin

Вот запрос, выведенный командой echo:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM emails WHERE CustomerId = '{15EE63AC-F070-4BEA-BB78-4E6687A1ED79}' AND WidgetId = '{00000000-0000-0000-0000-000000000000}'

А вот так выглядит запрос после выполнения в phpMyAdmin
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM emails
  3. WHERE CustomerId =  '{15EE63AC-F070-4BEA-BB78-4E6687A1ED79}'
  4. AND WidgetId =  '{00000000-0000-0000-0000-000000000000}'


Записи есть точно, я специально две добавил. И запрос через phpMyAdmin их выбирает.
Но строка
PHP:
скопировать код в буфер обмена
  1. echo 'Выбрано строк: ' . $mysqli->num_rows;
возвращает Выбрано строк: Т.е.получается, что $mysqli->num_rows содержит пустое значение.
(Добавление)
Fart пишет:
Покажи строчку запроса mysql после вывода результата введенного в phpmyadmin
(Добавление)
А пробел существует и он учитывается. в примере:
твоем


А должен


(Добавление)
Несмотря на то, что пробела у это нет



Если пробел не причем и у тебя есть согласно примеру данные, значит по любому вывод нулевой в запросе и записей нет
Попробовал такой запрос: SHOW TABLES - в phpMyAdmin отработал нормально, а со страницы сайта опять ничего не вернул.
 
 Top
Sail
Отправлено: 05 Сентября, 2016 - 09:20:36
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


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




maxapet пишет:
Т.е.получается, что $mysqli->num_rows содержит пустое значение

А какое значение содержит $mysqli->affected_rows?
(Добавление)
Ну, или $result->num_rows?

(Отредактировано автором: 05 Сентября, 2016 - 09:23:56)

 
 Top
Мелкий Супермодератор
Отправлено: 05 Сентября, 2016 - 11:34:40
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




maxapet пишет:
$mysqli = new mysqli("localhost", "user", "userpwd", "mydb");

maxapet пишет:
echo 'Выбрано строк: ' . $mysqli->num_rows;

http://php.net/manual/en/class.mysqli.php
Где вы вообще нашли у объекта класса mysqli свойство num_rows?

Проверьте свой error_reporting. И display_errors заодно. Здесь E_NOTICE, который вы, судя по всему, не видите. А неизвестная переменная или свойство объекта - кидает E_NOTICE и представляется NULL, NULL после приведения к строке - пустая строка ''.


-----
PostgreSQL DBA
 
 Top
maxapet
Отправлено: 06 Сентября, 2016 - 17:26:04
Post Id


Новичок


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


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




Sail пишет:
maxapet пишет:
Т.е.получается, что $mysqli->num_rows содержит пустое значение

А какое значение содержит $mysqli->affected_rows?
(Добавление)
Ну, или $result->num_rows?

Спасибо, действительно, я не тот параметр проверял. $mysqli->affected_rows показывает, что выборка не пустая.
(Добавление)
Мелкий пишет:
maxapet пишет:
$mysqli = new mysqli("localhost", "user", "userpwd", "mydb");

maxapet пишет:
echo 'Выбрано строк: ' . $mysqli->num_rows;

http://php.net/manual/en/class.mysqli.php
Где вы вообще нашли у объекта класса mysqli свойство num_rows?

Проверьте свой error_reporting. И display_errors заодно. Здесь E_NOTICE, который вы, судя по всему, не видите. А неизвестная переменная или свойство объекта - кидает E_NOTICE и представляется NULL, NULL после приведения к строке - пустая строка ''.

Спасибо, действительно, у меня "смещались в кучу кони, люди...". Я смешал функциональный и объектно-ориентированный подходы. Если использовать $mysqli->affected_rows, то всё работает.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB