Выдает ошибку php

380
10 июня 2021, 22:50

Выдает: что "Регистрация не удалась" и на базу данных ничего не приходит, в чем мб ошибка?

/* Файл connect.php, просто не знаю, как правильно тут сделать*/ 
<?php  
$connection = mysqli_connect('localhost', 'root', '', 'pratice'); 
$select_db = mysqli_select_db($connection, 'pratice'); // Выбираем базу данных 
 
?>
<!DOCTYPE html> 
<html> 
<head> 
	<title>Registers</title> 
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> 
	<link rel="stylesheet" href="style.css"> 
</head> 
<body> 
<?php 
require('connect.php'); 
 
if (isset($_POST['username']) && isset($_POST['password'])) // isset - Определяет, была ли установлена переменная,  
{ 
	$username = $_POST['username']; 
	$emal = $_POST['email']; 
	$password = $_POST['password']; 
 
	$query = "INSERT INTO users (username, password, email) VALUES ('$username', '$email', '$password')";// Добавляем в mysql значения 
	$result = mysqli_query($connection, $query); // Для подключения к базе данных 
 
	if($result) // Теперь проверяем прошла ли регистрация или нет 
	{ 
		$smsg = "Регистрация прошла успешно"; 
	} else { 
		$fsmsg = "Регистрация не удалась"; 
	} 
} 
?> 
 
 
	<div class="container"> 
		<form class="form-signin" method="POST"> 
			<h3>Registration</h3> 
			 
			<?php if(isset($smsg)){ ?> <div class="alert alert-success" role="alert"><?php echo $smsg; ?></div><?php }?> 
			<?php if(isset($fsmsg)){ ?> <div class="alert alert-danger" role="alert"><?php echo $fsmsg; ?></div><?php }?> 
 
			<input type="text" name="username" class="form-control" placeholder="Username" required> <!-- required - значит обязательно для ввода --> 
			<input type="email" name="email" class="form-control" placeholder="Email" required> 
			<input type="password" name="password" class="form-control" placeholder="Password" required> 
			<button class="btn btn-lg btn-primary btn-block" type="submit">REGISTER</button><!-- btn, чтобы определить кнопку; btn-lg, размер кнопки; btn-primary, цвет кнопки; btn-block, размещение кнопки --> 
 
 
		</form> 
	 
	</div> 
 
 
 
</body> 
</html>

Answer 1

Ваша ошибка в этой строке кода.

$query = "INSERT INTO users (username, password, email) VALUES ('$username', '$email', '$password')";// Добавляем в mysql значения

Она не совпадает со структурой БД.
Замените этой строкой и всё заработает:

$query = "INSERT INTO users (username, password, email,active) VALUES ('$username', '$email', '$password',0)";// Добавляем в mysql значения

Немного пояснений:

Итого ваш запрос обязательно должен установить поле active, т.к. оно не может быть без значения(Null) и для него нет значения "по умолчанию".

Можно так же установить для данного поля(в БД) или значение по умолчанию(например 0) или возможность установки в Null и тогда код на php можно не менять.

Answer 2
  1. В файле подключеня к бд не нужно указывать

    $select_db = mysqli_select_db($connection, 'pratice');

т.к ты уже указал базу данных в переменной $connection. 2. Сделай вот так:

$username = mysqli_real_escape_string($_POST['username']);
$emal = mysqli_real_escape_string($_POST['email']);
$password = md5($_POST['password']); // Или можешь использовать другой метод шифрования
  1. Пробуй так

    if(mysqli_num_rows($result) == 0){
    $query = "INSERT INTO users (username, password, email) VALUES('$username','$email', '$password')";
    $result = mysqli_query($connection, $query);
    echo = "Регистрация прошла успешно";
    } else {
    echo = "Пользователь не найден";
    }
    

Как-то так , у меня все заработало так!

READ ALSO
Сохранение множества картинок в yii2

Сохранение множества картинок в yii2

Вообщем такое дело, решил потренироваться в traits и заодно избавится от одного расширения для сохранения картинок и в итоге написал такой код:

341
html_entity_decode возвращает строку в &lt;p&gt;

html_entity_decode возвращает строку в <p>

html_entity_decode возвращает строку в p, а мне нужно чтобы она не была обернута в тэг pКак можно это сделать? Потому как хочу на этот

81
Генератор в рекурсивной функции

Генератор в рекурсивной функции

Рекурсивная функция возвращает все папки из директории C:\Test, кроме вложенныхЧто необходимо изменить, чтобы генератор yield возвращал все папки,...

99
Не работает форма на спйте

Не работает форма на спйте

хотел бы узнать почему не работает форма на сайте, есть сайт http://vialusocom/product/wordpress-pennant При клике на купить в 1 клик вылезает модальное окно, хотел...

132