syntax error, unexpected T_DOUBLE_ARROW

<?php
session_start();
$link = mysqli_connect('remotemysql.com','3u5SxxxWnv','4VxvDT64ar','3u5SxxxWnv');
$login = md5($_POST['login']);
$pass =  md5($_POST['pass']);
$result = mysqli_query($link, "SELECT * FROM form");

if (mysqli_num_rows($result) > 0) {
  $_SESSION['user'] = (
      "id" => $user['id'],
      "login" => $user['login'],
      "email" => $user['email']
  );
} elseif(mysqli_num_rows($result) = 0) {
  $_SESSION['message'] = 'Не верный логин или пароль';
  header('location: /');
} else {
  header('location: /cob.php');
}
?>

Ответы (1 шт):

Автор решения: Ein

Массив должен создаваться при помощи квадратных скобок. В elseif, вероятно, задумывалось сравнение.

Вот пример валидной конструкции:

if (mysqli_num_rows($result) > 0) {
  $_SESSION['user'] = [ // замена скобки
      "id" => $user['id'],
      "login" => $user['login'],
      "email" => $user['email']
  ]; // замена скобки
}

elseif(mysqli_num_rows($result) == 0) { // = заменено на ==
  $_SESSION['message'] = 'Не верный логин или пароль';
  header('location: /');
}

else{
  header('location: /cob.php');
}

Cейчас же не понятно по какой логике выполнение должно пропустить первый else и перейти ко второму.

→ Ссылка