javascript — все, что я пытаюсь сохранить в базе данных, входит со значением ‘0’

Я сделал приложение для входа / регистрации, следуя этому руководству:
https://www.youtube.com/watch?v=QxffHgiJ64M&список = PLe60o7ed8E-TztoF2K3y4VdDgT6APZ0ka

Все было хорошо, но потом я удалил параметр age и вставил параметр «lastname» и «email». Таким образом, каждый раз, когда я пытаюсь зарегистрировать пользователя, поле «email» имеет значение «0» (даже если я не использую @ или.)

Это мой файл Register.php:

<?php
require("Password.php");
$connect = mysqli_connect("x", "x", "x", "x");

$name = $_POST["name"];
$lastname = $_POST["lastname"];
$email = $_POST["email"];
$password = $_POST["password"];
function registerUser() {
global $connect, $name, $lastname, $email, $password;
$passwordHash = password_hash($password, PASSWORD_DEFAULT);
$statement = mysqli_prepare($connect, "INSERT INTO user (name, lastname, email, password) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "ssis", $name, $lastname, $email, $passwordHash);
mysqli_stmt_execute($statement);
mysqli_stmt_close($statement);
}
function emailAvailable() {
global $connect, $email;
$statement = mysqli_prepare($connect, "SELECT * FROM user WHERE email= ?");
mysqli_stmt_bind_param($statement, "s", $email);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
$count = mysqli_stmt_num_rows($statement);
mysqli_stmt_close($statement);
if ($count < 1){
return true;
}else {
return false;
}
}
$response = array();
$response["success"] = false;
if (emailAvailable()){
registerUser();
$response["success"] = true;
}

echo json_encode($response);
?>

1

Решение

Простая ошибка, вы перепутали поле адреса электронной почты в mysqli_stmt_bind_param с i вместо s,

Изменить,

mysqli_stmt_bind_param($statement, "ssis", $name, $lastname, $email, $passwordHash);

Чтобы,

mysqli_stmt_bind_param($statement, "ssss", $name, $lastname, $email, $passwordHash);

Я не уверен как mysqli преобразует параметр в указанный вами тип, но при запуске следующего кода вывод 0:

<?php
echo (int) 'test@test.com'; ---> 0
?>
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector