Две вещи:
pg_fetch_array()
не возвращает то, что вы ожидаете. $_SESSION
не может иметь любое имя ключа, которое также не может быть переменной phpname .
$rows
выглядит так:
$rows = array(
'user_id' => 1
1,
'password' => 'THE PASSWORD',
'THE PASSWORD',
);
$rows['user_id'] === $rows[0];
// etc
Таким образом, в вашем цикле foreach, сразу после клавиши user_id
, вы фактически делаете это:
$_SESSION[0] = 1;
Это недопустимо, поэтому объект сеанса перестает работать.
Вместо этого сделайте следующее:
// PGSQL_ASSOC says, "only return named keys, not numeric keys"
$therow = pg_fetch_array($query, null, PGSQL_ASSOC);
unset($therow['password']);
$_SESSION['user'] = $therow;
pg_free_result($query);
// get user data like this:
$_SESSION['user']['user_id']