Передача целочисленного аргумента в метод
Есть метод класса, принимающий 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.
Подскажите пожалуйста, в чем причина, и что я делаю не так?