Отправка данных регистрационной формы в базу данных - phpMyAdmin - PullRequest
0 голосов
/ 08 декабря 2018

Я новичок в php и до сих пор много узнаю о том, как работают базы данных.Я изо всех сил пытался выяснить, как добавить дополнительные данные в таблицу MySQL с помощью phpMyAdmin.Я считаю, что я по крайней мере правильно добавил дополнительные входные данные в свою таблицу базы данных, но с точки зрения php я в растерянности.Я уверен, что забыл кое-что очень простое здесь.

Я могу успешно ввести $ username, $ email и $ password, которые отлично работают с моей таблицей БД.Сейчас я пытаюсь добавить $ firstname и $ lastname, но не повезло!По общему признанию, мое знание этого очень мало.

Любая помощь вообще очень ценится!

Вот PHP:

<?php
include('classes/DB.php');


if (isset($_POST['createaccount'])) {
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$username = $_POST['username'];
$password = $_POST['password'];



if (!DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$username))) {
if (strlen($username) >= 3 && strlen($username) <= 32) {
if (preg_match('/[a-zA-Z0-9_]+/', $username)) {
if (strlen($password) >= 6 && strlen($password) <= 60) {
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {



if (!DB::query('SELECT email FROM users WHERE email=:email', array(':email'=>$email))) {



DB::query('INSERT INTO users VALUES (\'\', :username, :password, :email, \'0\', \'\')', array(':username'=>$username, ':password'=>password_hash($password, PASSWORD_BCRYPT), ':email'=>$email));

На всякий случай, DB.php:

<?php
class DB {


private static function connect() {

$pdo = new PDO('mysql:host=____;dbname=____;charset=utf8', '____', '____');


$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
}

public static function query($query, $params = array()) {
$statement = self::connect()->prepare($query);
$statement->execute($params);

if (explode(' ', $query)[0] == 'SELECT') {
$data = $statement->fetchAll();
return $data;
           }
      }

}

1 Ответ

0 голосов
/ 08 декабря 2018

Я тоже новичок в php/mysql, так что это может быть неправильный ответ, но ваш оператор вставки неверен из того, что я знаю.

DB::query('INSERT INTO users VALUES (\'\', :username, :password, :email, \'0\', \'\')', array(':username'=>$username, ':password'=>password_hash($password, PASSWORD_BCRYPT), ':email'=>$email));

Я всегда задаю имя столбца, чтобы оно выгляделовот так:

INSERT INTO table_name (columnname1, columnname2, etc.) VALUES (columnvalue1, columnvalue2, etc.);

Опять же не на 100% уверен, но я так обычно делаю.

Вот пример одного из моих ВСТАВЛЕНИЙ:

mysql_query("INSERT INTO memberkey (member_id, randomkey) VALUES (".$_SESSION['id'].", '".$keyn."')");
...