Создаю блог на PHP, в ходе разработки возникла такая проблема: пишу проверку пользователя в бд, ввёл все данные в форме и нажимаю на отправить выходит такая ошибка: Notice: Trying to access array offset on value of type bool in E:\Ampps\www\blog\app\controllers\users.php on line 21 Код: <?php include("app/database/db.php"); $errMsg = ''; if($_SERVER['REQUEST_METHOD'] === 'POST' ){ $admin = 0; $login = trim($_POST['login']); $email = trim($_POST['mail']); $passF = trim($_POST['pass-first']); $passS = trim($_POST['pass-second']); if($login === '' || $email === '' || $passF === ''){ $errMsg = "Заполните все поля!"; }elseif(mb_strlen($login, 'UTF8') < 2){ $errMsg = "Логин не должен быть короче 2 символов!"; }elseif($passF !== $passS){ $errMsg = "Пароли в обеих полях должны соответствовать!"; }else{ $existence = selectOne('users', ['email' => $email]); if($existence['email'] === $email){ $errMsg = "Такой пользователь с такой почтой уже зарегистрирован!"; }else{ $pass = password_hash($passF, PASSWORD_DEFAULT); $post = [ 'admin' => $admin, 'username' => $login, 'email' => $email, 'password' => $pass ]; $id = insert('users', $post); } } }else{ echo 'GET'; $login = ''; $email = ''; }
smoook92, $existence = selectOne('users', ['email' => $email]); PHP $existence = selectOne('users', ['email' => $email]); точно возвращаем массив?
Обменник, 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++; } }
smoook92, и у меня вопрос, зачем вам эта функция? Много места занимает 3 строки кода? https://snipp.ru/php/manual-pdo