PHP вставляет строку (фамилию) в базу данных как массив

Я добавляю функцию регистрации в личный проект PHP, однако при вставке данных в базу данных MySQL она записывает фамилию в виде массива, а не строки. Столбец в базе данных показывает слово «Массив» вместо настоящего имени, а echo mysqli_info($conn); возвращает «Преобразование массива в строку в…». Есть ли способ решить эту проблему? или я что то не так делаю?

Структура базы данных Структура базы данных

Форма введите описание изображения здесь

Результат базы данных введите описание изображения здесь

HTML

<form action = "includes/signup-handler.php" method = "post" class = "signup-form">
  <div class = "form-group">
    <input type = "text" name = "firstName" id = "firstName" class = "form-control" placeholder = "first name">
  </div>
  <div class = "form-group">
    <input type = "text" name = "lastName" id = "lastName" class = "form-control" placeholder = "last name">
  </div>

  <div class = "form-group">
    <input type = "email" name = "email" id = "email" class = "form-control" placeholder = "email address">
  </div>

  <div class = "form-group">
    <input type = "password" name = "password" id = "password" class = "form-control" placeholder = "password">
  </div>

  <div class = "form-group">
    <input type = "password" name = "repeatPassword" id = "password" class = "form-control" placeholder = "confirm password">
  </div>

  <button type = "submit" class = "btn btn-success" name = "submit">Sign up</button>

</form>

И обработчик PHP;

if (isset($_POST['submit'])){
    require 'connection.php';

    $firstName = $_POST['firstName'];
    $lastName = $_POST['lastName'];
    $email = $_POST['email'];

    //Check for validation
    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL) && filter_var($email, FILTER_SANITIZE_EMAIL)){
        header("Location: ../register.php?error=invalidemail");
        exit();
    }
    elseif (!preg_match("/^[a-zA-Z0-9]*$/", $firstName, $lastName)) {
        header("Location: ../register.php?error=invalidname&email = ".$email);
    exit();
    }

    //Create prepared statements for validation
    else {
        $selectQuery = "SELECT * FROM users WHERE email=?";
        $statement = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($statement, $selectQuery)){
            header("Location: ../register.php?error=sqlerror");
            exit();
        }else{
            mysqli_stmt_bind_param($statement, "s", $email);
            mysqli_stmt_execute($statement);
            mysqli_stmt_store_result($statement);
            $resultCheck = mysqli_stmt_num_rows($statement);
            if ($resultCheck > 0) {
                header("Location: ../register.php?error=usertaken&firstName = ".$firstName."&lastName = ".$lastName."&email = ".$email);
                exit();
            }else{
                $insertQuery = "INSERT INTO users (firstName, lastName, email) VALUES (?, ?, ?);";
                $statement = mysqli_stmt_init($conn);
                    if (!mysqli_stmt_prepare($statement, $insertQuery)){
                        header("Location: ../register.php?error=sqlerror");
                        exit();
                    }else {
                        mysqli_stmt_bind_param($statement, 'sss', $firstName, $lastName , $email);
                        mysqli_stmt_execute($statement);
                        header("Location: ../register.php?error=success");
                        //echo mysqli_info($conn);
                        // var_dump($lastName);
                        exit();
                    }
            }
        }
    }
    mysqli_stmt_close($statement);
    mysqli_close($conn);
}else{
    header("Location: ../register.php");
    exit();
}

Третий аргумент функции preg_match — это массив, который заполняется результатами поиска. Вы передаете ему $lastName, чтобы он преобразовал его в массив.

solarc 18.03.2019 23:18

@solarc - Хороший улов. Вы должны написать это как ответ.

M. Eriksson 18.03.2019 23:19

о мой! Большое спасибо @solarc; Я разделил их и добавил новый elseif для $lastname. Это работает отлично. Если есть лучший способ сделать это, я открыт для предложений

Allan 18.03.2019 23:36

Думаю, мне стоит сначала прочитать комментарии, лол.

ArtisticPhoenix 18.03.2019 23:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
114
0

Другие вопросы по теме