Передача целочисленного аргумента в метод

Есть метод класса, принимающий id пользователя и возвращающий ассоциативный массив с данными об этом пользователе.

Вот метод:

public function GetUser($user) {
   /* Создание объекта PDO в $pdo */

   $statement = $pdo->prepare("SELECT * FROM `users` WHERE `id` = :id");
   $statement->bindParam(':id', $user);
   $statement->execute();
   $result = $statement->fetch(PDO::FETCH_ASSOC);

   $pdo = NULL;

   return $result;
}

При работе с данным методом происходит, по моему мнению, невероятная мистика. Приведу пример:

// Присваиваем id вручную
Class::GetUser(1); // В этом случае возвращается массив с данными пользователя

// Присваиваем id через переменную
$id = 1;
Class::GetUser($id); // Все по прежнему хорошо, массив с данными возвращается.

// Присваиваем id пользователя из индекса ассоциативного массива, полученного путем выборки данных из другой таблицы
Class::GetUser($arr['user_id']); // Здесь метод возвращает false

$arr[] был получен точно также с помощью PDO::fetch(PDO::FETCH_ASSOC), только из другой таблицы. $arr['user_id'] - хранит значение в виде строки, но насильное изменение типа данных, также проблему не решает:

$id = (int) $arr['user_id'];

Теперь var_dump($id) скажет что в этой переменной лежит int(), однаком Class::GetUser($id) все также возвращает false.

Пробовал выводить в методе значение присвоенное в аргументе, вот так:

public function GetUser($user) {
   /* Создание объекта PDO в $pdo */

   echo 'Присвоен аргумент: '.$user; // Вот так

   $statement = $pdo->prepare("SELECT * FROM `users` WHERE `id` = :id");
   $statement->bindParam(':id', $user);
   $statement->execute();
   $result = $statement->fetch(PDO::FETCH_ASSOC);

   $pdo = NULL;

   return $result;
}

Метод отображает переданное ему значение из любого источника (число, переменная, массив). Однако, по какой-то причине, когда присваивается значение из массива - выборку не делает и возвращает false.

Подскажите пожалуйста, в чем причина, и что я делаю не так?


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