Вставить PHP-форму в базу данных PostgresSQL

#php #html #postgresql

#php #HTML #postgresql

Вопрос:

Итак, я создаю веб-сайт, где вы можете купить билеты и т.д. Итак, я хочу иметь систему входа в систему, я начал создавать веб-сайт и начал с PHP-кода для входа, но я всегда получаю массив ошибок?? Это работает, когда я хочу вставить только переменную email, а остальной обычный текст.

Я потратил целую неделю, пробуя разные методы и т.д. Но я не понимаю, почему это не работает.

Я даже получаю ту же ошибку, когда использую константы вместо переменных POST…

 CREATE TABLE Users(
  userId SERIAL,
  email VARCHAR(40) NOT NULL,
  password VARCHAR(30) NOT NULL,
  firstName VARCHAR(20) NOT NULL,
  lastName VARCHAR(20) NOT NULL,
  age INT NOT NULL,
  organizer BOOLEAN NOT NULL,
  region VARCHAR(30),
  favouriteGenre VARCHAR(15),
  description VARCHAR(200),

  PRIMARY KEY(userId)
);
  
 <?php

  require 'globals.php';

  try {
    $db_conn = new PDO("pgsql:host=$db_host;dbname=$db_name", $db_user, $db_password);
  } catch (PDOException $e) {
    die("Error: ".$e->getMessage()."n");
  }

  $email = $_POST['email'];
  $password = $_POST['password'];
  $pwdConfirm = $_POST['confirm'];
  $firsName = $_POST['firstName'];
  $lastName = $_POST['lastName'];
  $age = $_POST['age'];
  $rol = $_POST['rol'];
  $region = $_POST['region'];
  $favGenre = $_POST['favGenre'];
  $description = $_POST['description'];

  //TODO inputChecks

  $query = $db_conn->prepare('INSERT INTO users (email, password, firstName, lastName, age, organizer)
                              VALUES (:email, :password, :firstName, :lastName, :age, :organizer)');
  $query->bindParam(':email', $email, PDO::PARAM_STR, 40);
  $query->bindParam(':password', $password, PDO::PARAM_STR, 30);
  $query->bindParam(':firstName', $firstName, PDO::PARAM_STR, 20);
  $query->bindParam(':lastName', $lastName, PDO::PARAM_STR, 20);
  $query->bindParam(':age', $age, PDO::PARAM_INT);
  $query->bindParam(':organizer', $firstName, PDO::PARAM_BOOL);

  if ($query->execute()) {
    echo "success!";
  } else {
    die("Execute query error: ".$db_conn->errorInfo());
  }

  $db_conn = NULL;
  

Я ожидаю, что он вставит ее в базу данных и больше не выдаст ошибку.

Комментарии:

1. Можете ли вы показать нам точное сообщение об ошибке, которое вы получаете?

2. Я буквально получаю «Массив» обратно из errorInfo(), есть ли способ получить более подробную информацию?

3. Я попробовал это на веб-сервере, и теперь я получаю лучшее сообщение об ошибке: Обратите внимание: Преобразование массива в строку в /home/siebedreesen/public_html/project/PHP/signin.php в строке 29 Ошибка выполнения запроса: Массив

Ответ №1:

Попробуй это

 $query = $db_conn->prepare('INSERT INTO users (email, password, firstName, lastName, age, organizer,region, favouriteGenre, description)
                              VALUES (:email, :password, :firstName, :lastName, :age, :organizer, :region, :favouriteGenre, :description)');
  $query->bindParam(':email', $email, PDO::PARAM_STR, 40);
  $query->bindParam(':password', $pwd, PDO::PARAM_STR, 30);
  $query->bindParam(':firstName', $firstName, PDO::PARAM_STR, 20);
  $query->bindParam(':lastName', $lastName, PDO::PARAM_STR, 20);
  $query->bindParam(':age', $age, PDO::PARAM_INT);
  $query->bindParam(':organizer', $firstName, PDO::PARAM_BOOL);
  $query->bindParam(':region', $region, PDO::PARAM_STR);
  $query->bindParam(':favouriteGenre', $favGenre, PDO::PARAM_STR);
  $query->bindParam(':description',  $description, PDO::PARAM_STR);
  

Одна из возможных причин ошибки, которую вы получаете, заключается в том, что вы пытаетесь вставить 6 значений в таблицу с 9 полями.Другой возможной причиной ошибки является то, что вы определили переменную для пароля как $pwd, но используете переменную $ password при привязке параметров.

Комментарии:

1. Пожалуйста, поделитесь структурой таблицы / полями для пользователей таблицы.@ SiebeDreesen

2. Та же ошибка: ( может быть, есть способ, которым я могу получить более подробную информацию об ошибке?