@Misha5
профессиональный бомж

Ошибка при отправке данных в базу данных?

Такс...
Делаю форму регистрации. Когда пытаюсь записать данные в бд-шку при проверке выдает ошибку.
$mysql = new mysqli('localhost', 'root', '', 'factotum_base');

if ($mysql) {
 	echo ":)";
 } else {
	echo ":(";
 }


При этом соединение с бд происходит, данные правильно обработаны и все вроде хорошо. Получается ошибка где-то на этапе INSERT-а.

вот php на странице регистрации:
if(isset($_POST["send"])) {
		$name = filter_var(trim($_POST['name']), FILTER_SANITIZE_STRING);
		$email = filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL);
		$pass = filter_var(trim($_POST['pass']), FILTER_SANITIZE_STRING); 
		$prove_pass = filter_var(trim($_POST['prove_pass']), FILTER_SANITIZE_STRING);

		$error = false;

		$error_name = "";
		$error_email = "";
		$error_pass = "";
		$error_prove_pass = "";

 if(mb_strlen($name) < 5 || mb_strlen($name) > 50) {
			$error_name = "Недопустимая длина имени";
			$error = true;
			// exit();
		} 
 //и т.д. обрабатываю все строки 
                
 //Если ошибок нет, записываю данные в сессию, отправляю письмо с подтверждением на почту и делаю редирект на check.php
		if(!$error) {
			$_SESSION["name"] = $name;
			$_SESSION["email"] = $email;
			$_SESSION["pass"] = $pass;
			$_SESSION["prove_pass"] = $prove_pass;

			$subject = "=?utf-8?B?".base64_encode('Письмо с подтверждением.')."?=";
			$headers = "From: Factotum\r\nReply-to: Factotum\r\nContent-type: text/plain; charset=utf-8\r\n";
			$message = "Ссылка для подтверждения регистрации на Factotum.com: #Ссылка на сайт#";

			mail($email, $subject, $message, $headers); //поменять метод кодировки, чтобы считывалось как надо

			header("Location: /php/enter_validation/check.php?send=1");
			exit();
		}
	}


Check.php - записываю данные в бд (ошибка где-то здесь)
<?php
	session_start();
	header('Content-Type: text/html; charset=utf-8');

	$name = $_SESSION["name"];
	$email = $_SESSION["email"];
	$pass = $_SESSION["pass"];
	$prove_pass = $_SESSION["prove_pass"];

       $hashed_pass = password_hash($pass, PASSWORD_DEFAULT);

	$mysql = new mysqli('localhost', 'root', '', 'factotum_base');

	mysqli_set_charset($mysql, "utf8");

       $sql1 = "INSERT INTO `users`(`name`, `email`, `password`) VALUES('$name', '$email', '$hashed_pass')";
	$res = mysqli_query($mysql, $sql1);

	if ($res == false) {
		printf("Ошибка при выполнении запроса\n");   //вылетает ошибка :(
	} else {
		printf("Запрос выполнен :)");
	}

	mysqli_close($mysql);

	header("refresh: 5; url=/"); //задержка перед редиректом
?>
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 1
@FanatPHP
вместо
$mysql = new mysqli('localhost', 'root', '', 'factotum_base');

if ($mysql) {
 	echo ":)";
 } else {
  echo ":(";
 }

Написать
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysql = new mysqli('localhost', 'root', '', 'factotum_base');

А этот ужас
if ($res == false) {
    printf("Ошибка при выполнении запроса\n");   //вылетает ошибка :(
  } else {
    printf("Запрос выполнен :)");
  }

убрать целиком
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы