Куда пропадают данные из запроса?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 11 октября 2012 в 02:37
фрагмент /components/users/frontend.php:
  1. $sql = "SELECT u.*, p.*, u.id as id,
  2. DATE_FORMAT(u.regdate, '%d-%m-%Y') as fregdate,
  3. DATE_FORMAT(u.logdate, '%d-%m-%Y') as flogdate,
  4. DATE_FORMAT(u.birthdate, '%d') as bday,
  5. DATE_FORMAT(u.birthdate, '%m') as bmonth,
  6. DATE_FORMAT(u.birthdate, '%Y') as byear,
  7. IFNULL(p.gender, 0) as gender
  8. FROM main_users u
  9. INNER JOIN main_user_profiles p ON p.user_id = u.id
  10. WHERE u.id = '$id' AND u.is_locked = 0
  11. LIMIT 1
  12. ";
  13. $result = $inDB->query($sql);
  14.  
  15. if (!$inDB->num_rows($result)){ cmsCore::error404(); }
  16.  
  17. $usr = $inDB->fetch_assoc($result);
  18. echo $sql . '<hr>' . $usr['icq'];
  19.  
Вывод:
  1. SELECT u.*, p.*, u.id as id, DATE_FORMAT(u.regdate, '%d-%m-%Y') as fregdate, DATE_FORMAT(u.logdate, '%d-%m-%Y') as flogdate, DATE_FORMAT(u.birthdate, '%d') as bday, DATE_FORMAT(u.birthdate, '%m') as bmonth, DATE_FORMAT(u.birthdate, '%Y') as byear, IFNULL(p.gender, 0) as gender FROM main_users u INNER JOIN main_user_profiles p ON p.user_id = u.id WHERE u.id = '4' AND u.is_locked = 0 LIMIT 1
то есть, ниже ничего не выводится, только $sql+hr

Если скопировать в SQL phpMyAdmin, запрос исправно выдает нужные данные, включая заполненное поле icq.

1. Куда делось?
2. Где прочитать про механизм формирования данных? Есть такая литература?
3. (риторический) И почему у меня минуту назад всё работало? :)

P.S.:
Что делал до этого: правил шаблоны профиля, добавлял поля в frontend.php
#2 11 октября 2012 в 03:47
восстановил frontend.php на первоначальный, мониторю {$usr.icq} в шаблоне профиля — пусто :(
#3 11 октября 2012 в 05:18
BSB, в коде всё ровно. Единственное логическое объяснение того, что $usr['icq'] ничего не показывает — в Базе данных у данного юзера не заполнено это поле.
#4 11 октября 2012 в 07:54
В том-то и дело, что заполнено sad
#5 11 октября 2012 в 08:24
BSB, вместо echo $sql. '<hr>'. $usr['icq'];
напишите
print_r($usr);
и посмотрите полностью, что возвращает ваш запрос
#6 11 октября 2012 в 08:33
Да писал уже, ага… Что характерно: часть переменных выдает, часть нет. При этом никакой последовательной зависимости и данные в базе существуют.
#7 11 октября 2012 в 09:03
Давайте Ваш запрос сократим до вот такого:
  1. $sql = "SELECT u.*, p.imageurl
  2. FROM main_users u
  3. LEFT JOIN main_user_profiles p ON p.user_id = u.id
  4. WHERE u.id = 1 LIMIT 1";
и посмотрим, что выдаст.
#8 11 октября 2012 в 10:10

посмотрим, что выдаст

Ленивый
фрагмент вывода:
  1. @realbsb.ru [icq] => [jabber] =>
таким образом, всё по-прежнему
#9 11 октября 2012 в 10:24
покажите полностью, что выводит print_r($usr); при таком запросе
#10 11 октября 2012 в 10:39
хм, по невнимательности u.id = 1 в условии оставил. А так с u.id = '$id' нормально выдает:
  1. Array ( [id] => 5 [group_id] => 1 [login] => game [nickname] => realgame [password] => 4297f44b13955235245b2497399d7a93 [email] => realbsb-d1@realbsb.ru [icq] => 123123123 [jabber] => game@jabber.ru [googletalk] => game@gmail.com [googlechat] => Хей, ла-ла-лэй! [skype] => gameboy [sip] => 12345 [vk] => http://vk.com/game [facebook] => http://facebook.com/game [twitter] => http://twitter.com/game [mailru] => http://my.mail.ru/game [ok] => http://odnoklassniki.ru/game [phone] => +79876543210 [regdate] => 2012-09-19 00:29:04 [logdate] => 2012-10-11 12:25:21 [birthdate] => 0000-00-00 [is_locked] => 0 [is_deleted] => 0 [is_logged_once] => 1 [rating] => 0 [points] => 0 [last_ip] => 192.168.0.1 [status] => [status_date] => 0000-00-00 00:00:00 [invited_by] => [invdate] => [openid] => [imageurl] => ) 1
P.S.: Перепроверил с оригинальным — данные по-прежнему съедаются
#11 11 октября 2012 в 10:47
С SQL я на "Вы", поэтому ннада выспаться. Возьму таймаут.
Если есть соображения, буду рад увидеть их здесь!
#12 11 октября 2012 в 11:35
BSB, ну вот. Теперь маленькими шажками, добавляйте к этому запросу строки, пока не придёте к начальному варианту, а по пути смотрите. что запрос возвращает, чтобы выцепить в каком моменте возникает ваша проблема
#13 11 октября 2012 в 18:37
Спасибо! Разобрался.

А произошло вот что: вчера я внес новые поля в user_profiles. Потом, когда сообразил, что личные данные храняться в users, создал новые поля там. А старые удалить забыл. Сейчас со свежей головой осознал…
#14 11 октября 2012 в 18:45
Тема закрыта.
Ленивый, плюсег
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.