yaleksandr89
@yaleksandr89
PHP developer

Trying to access array offset on value of type bool. Как исправить?

Здравствуйте.
На одном из проектов встретил нотис:
Notice: Trying to access array offset on value of type bool in ...


Погуглив понял, что это новшество в 7.4, но вот не могу понять как его исправить.

Участок кода где появился нотис
$init = $_POST['external_url'] ?? null;
$preparedLink = prepareExternalLink($init);
$sth = db_query("SELECT external_url, created_short_id FROM result WHERE external_url='" . $preparedLink . "'")->fetch();

if ($sth) {
    $_COOKIE['unique_url'] = false;
} elseif (isset($_COOKIE['url_empty'])) {
    $_COOKIE['unique_url'] = false;
} elseif (isset($_COOKIE['url_incorrect'])) {
    $_COOKIE['unique_url'] = false;
} else {
    $_COOKIE['unique_url'] = true;
}

$short_url = "{$_SERVER['HTTP_HOST']}/r_{$sth['created_short_id']}";
if ($sth !== false) {
    $sth = array_merge($sth, ['short_link' => $short_url]);
    $sth = changeKeyExistArray($sth,
        ['external_url', 'created_short_id', 'short_link', 0],
        ['External_url', 'ID_short_url', 'Result_url', 'Unique_url']);
}

Нотис указывает на эту строчку:
$short_url = "{$_SERVER['HTTP_HOST']}/r_{$sth['created_short_id']}";


не подскажите как исправить?
  • Вопрос задан
  • 352 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Судя по всему, в $sth у вас записано булево значение (предположительно, false). Попасть в переменную это значение могло только при вызове функции db_query()->fetch(). Вот там и ищите проблему. Функция db_query к стандартным не относится, значит смотрите в своём коде, что она возвращает и почему.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы