Я пытаюсь получить пользователя
function getItemName($dbh, $userId) {
$itemId = getItemId($dbh, $userId); // the getItemId() function works
echo "item id is: " . $itemId ; // because I can see the correct result if I echo it
$sql = "SELECT name FROM items WHERE id = :item_id";
$stm = $dbh->prepare($sql);
$stm->bindParam(':item_id', $itemId, PDO::PARAM_INT);
$stm->execute();
$result = $stm->fetch();
return $result['name'];
}
И я получаю Trying to access array offset on value of type bool
в строке return $result['name'];
.
Поле name
существует в таблице items
, так что это не проблема.
Кроме того, когда я пытаюсь продолжить его тестирование, я изменяю оператор $sql
на SELECT * FROM items
, а затем, когда я делаю echo $stm->rowCount()
, он находит правильное количество строк (с исходным количеством строк оператора SQL, равным 0)
Не могу понять, чем это вызвано
попробуйте добавить PDO::FETCH_ASSOC
в свой выбор. вот так: $result = $stm->fetch(PDO::FETCH_ASSOC);
Пожалуйста, покажите нам, как вы подключаетесь к базе данных
Это говорит о том, что переменная $result
является логической (скорее всего, FALSE). Поэтому по какой-то причине запрос не выполнен.
У меня есть 3 предложения:
$result = $stm->fetch();
if (!$result){
return null;
}
return $result['name'];
Вот в чем проблема! Спасибо. Я удалил несколько строк из одной из таблиц, поэтому он существовал в одной таблице, а не в другой, поэтому он возвращал результаты в одной функции, а не в другой. Я также добавлю if (!$result)
, чтобы исправить это, если нет результатов
Какова структура вашей таблицы? Какой код для
getItemID()
? Вы на 100% уверены, что значение, возвращаемое как$itemId
, является допустимым значением в базе данных? Предположительно ответ(bool) FALSE
указывает на то, что запрос выполнен безрезультатно...