Вам не нужно использовать цикл WHILE - это можно сделать одним оператором SQL:
SELECT wl.widget_id,
w.title
FROM WIDGET_LAYOUT wl
JOIN WIDGETS w ON w.id = wl.widget_id
WHERE wl.module_id = mysql_real_escape_string($id)
AND wl.state = mysql_real_escape_string($page)
AND wl.position = mysql_real_escape_string($position);
Проблема со значениями заголовков NULL зависит от того, равен ли столбец WIDGET.title
NULLableили в таблице WIDGETS
нет записи для значения id.Вам нужно проверить значения, возвращаемые из первого запроса, сначала подтвердить, что они имеют поддерживающие записи в таблице WIDGETS
, а затем посмотреть на значение заголовка ...