Итак, у меня есть этот PHP-код:
mysqli_stmt_bind_param($stmt,"s",$username);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$resultCheck = mysqli_stmt_num_rows($stmt);
if($resultCheck > 0)
{
header("Location: ../signup.php?error=userTaken&u&mail=".$email);
exit();
}
else
{
$sql = "INSERT INTO users (uidUsers, emailUsers, pwdUsers) VALUES (?,?,?)";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt,$sql))
{
header("Location: ../signup.php?error=sqlerror");
exit();
}
else
{
$hashedPwd = password_hash($password, PASSWORD_DEFAULT);
mysqli_stmt_bind_param($stmt,"sss",$username,$email,$hashedPwd);
$bp = $stmt->execute();
if ( false===$bp )
{
die('Error with execute: ' . htmlspecialchars($stmt->error));
}
header("Location: ../signup.php?signup=success");
exit();
}
}
, который выдает ошибку:
Error with execute: Column 'uidUsers' cannot be null.
подготовленный оператор не работает, независимо от того, что я пробовал.Однако, если я использую
$sql = "INSERT INTO users (uidUsers, emailUsers, pwdUsers) VALUES (' ',' ',' ')"
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
и просто вставляю данные без их очистки, это работает.