0

Появляется ошибка PHP Warning: Trying to access array offset on value of type bool в строке $existence = selectOne ('vet_center.userss', ['email' => $email]);с чем может быть связана?

$existence = selectOne ('vet_center.userss', ['email' => $email]);
if ($existence ['email'] === $email){
  $errMsg = "Пользователь с такой почтой уже зарегистрирован!";
} else{
  $pass = password_hash($password, PASSWORD_DEFAULT);
  $post = [
  'username' => $login,
  'email' => $email,
  'password' => $pass,
  'admin' => $admin
  ];

Код для функции selectOne:

function selectOne($table,$params = []){
    global $pdo;
$sql = "SELECT * FROM $table";

if(!empty($params)){ $i=0; foreach ($params as $key => $value) { if (!is_numeric($value)){ $value = "'".$value."'"; } if ($i === 0){ $sql = $sql . " WHERE $key = $value"; }else{ $sql = $sql . " AND $key = $value"; } $i++; } } $sql = $sql . " LIMIT 1"; $query = $pdo->prepare ($sql); $query->execute(); dbCheckError($query); return $query -> fetch(); }

Firstsky
  • 19
  • 6

1 Answers1

1

Скорее всего ошибка не на этой строке

$existence = selectOne ('vet_center.userss', ['email' => $email]);

а на этой:

if ($existence ['email'] === $email){

Т.к в $existence в итоге лежит булево значение, т.к. selectOne вернул false

  • да, все верно ошибся, проблема в этой строке if ($existence ['email'] === $email – Firstsky May 13 '22 at 17:48
  • и еще такая же проблема с сессиями `$user = selectOne ('vet_center.userss', ['id' => $id]);
      $_SESSION['id'] = $user['id'];
      $_SESSION['login'] = $user['username'];
      $_SESSION['admin'] = $user['admin']; `
    
    – Firstsky May 13 '22 at 18:54
  • Ответ я уже дал час назад – Алексей Шиманский May 13 '22 at 19:04
  • окей, а как можно исправить, чтобы переменная $existence возвращала массив – Firstsky May 13 '22 at 19:12
  • Починить запрос selectOne. без понятия что у тебя там под капотом. может у тебя должно быть users, а не userss. А может $email пустой ......... А что внутри функции вообще не представляю, может там проблемы. Включи отладчик и пройдись там в коде, смотри что на каждой строчке куда передаётся и формируется. Включи отображение ошибок полное...........https://ru.stackoverflow.com/q/701142/191482 – Алексей Шиманский May 13 '22 at 19:13