У меня есть таблица пользователей с уникальным идентификатором. Когда я пытаюсь получить свой идентификатор для сеанса, по какой-то причине он возвращает массив из двух идентификаторов.Почему мой SQL-запрос возвращает массив?
Таким образом, в следующем коде $ _SESSION ['userid'] становится массивом, содержащим два экземпляра одного и того же идентификатора.
Я не могу понять, почему, хотя ...
$_SESSION['userid'] = getUserID($_POST['username']);
function getUserID($username)
{
include 'db.inc.php';
try {
$sql = "SELECT id FROM user WHERE username = '". $username. "'";
$s = $pdo->prepare($sql);
$s->bindValue(':username', $username);
$s->execute();
}
catch (PDOException $e) {
$error = 'Error getting userid for '.$username . '....error: '.$e;
include $_SERVER['DOCUMENT_ROOT']."/database/includes/pages/error.html.php";
exit();
}
$row = $s->fetch();
return $row;
}
ли вы проверяете децибел? возможно, на самом деле он содержит один и тот же объект дважды? – Dima
Не решение, но ваш оператор SQL неверен. Чтобы связать параметр с PDO, он должен выглядеть так: 'SELECT id FROM user WHERE username =: username' –
Чтобы уточнить,' getUserID() 'возвращает ассоциативный массив? Можете ли вы разместить содержимое этого массива (do 'print_r ($ row)')? Что вы ожидаете от возвращения? –