Код:
if (isset($_POST['criar'])) {
$nome = $_POST['nome'];
$apelido = $_POST['apelido'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$data = date("Y/m/d");
$email_check = mysqli_query("SELECT email FROM users WHERE email='$email'");
$do_email_check = mysqli_num_rows($email_check);
if ($do_email_check >= 1) {
echo '<h3>Este email já está registado, faça o login, caso seja o seu, entre <a href="login.php">aqui!</a></h3>';
}elseif ($nome == '' OR strlen($nome)<3) {
echo '<h3>Escreva seu nome corretamente!</h3>';
}elseif ($email == '' OR strlen($email)<10) {
echo '<h3>Escreva seu email corretamente!</h3>';
}elseif ($pass == '' OR strlen($pass)<8) {
echo '<h3>Escreva a palavra-passe corretamente, deve possuir no mínino 8 caracteres!</h3>';
}else{
$query = "INSERT INTO users (`nome`,`apelido`,`email`,`password`,`data`) VALUES ('$nome','$apelido','$email','$pass','$data')";
$data = mysqli_query($query) or die(mysqli_error());
if ($data) {
setcookie("login",$email);
header("Location: ./");
}else{
echo "<h3>Desculpe, houve um erro ao registar-se...</h3>";
}
}
}
Ошибки говорят сами за себя, mysqli_query
требуется 2 параметра — документация доступна здесь: https://php.net/mysqli_query
Согласно документам, первый параметр — это подключение к вашей базе данных, созданное через mysqli_connect
,
Ваш мог бы читать, как:
$db = mysqli_connect(..);
// ..
$email_check = mysqli_query($db, "SELECT email FROM users WHERE email='$email'");
Кроме того, ваш код уязвим для внедрения SQL, вы должны рассмотреть возможность использования параметров в вашем запросе с кодом, таким как:
if ($stmt = mysqli_prepare($db, "SELECT email FROM users WHERE email = ?"))
{
mysqli_stmt_bind_param($stmt, "s", $email);
mysqli_stmt_execute($stmt);
$email_check = mysqli_stmt_num_rows($stmt);
}
TL; DR Вам необходимо указать соединение для запроса в функции mysqli_query.
Я полагаю, вы спрашиваете, почему вы получаете эти сообщения об ошибках. Первое сообщение указывает, что вам нужно иметь два параметра в вызове mysqli_query. Первый — это подключение к вашему серверу, второй — сам запрос.
Вот пример из https://www.w3schools.com/php/func_mysqli_query.asp
<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Perform queries
mysqli_query($con,"SELECT * FROM Persons");
mysqli_query($con,"INSERT INTO Persons (FirstName,LastName,Age)
VALUES ('Glenn','Quagmire',33)");
mysqli_close($con);
?>
Второе сообщение об ошибке связано с тем, что $ email_check станет нулевым при сбое вызова msqli_query, что приведет к сбою msqli_num_rows.
Обратите внимание, что вам, очевидно, придется изменить все вызовы myqsli_query. Вот ссылка на руководство, если вы хотите узнать больше о звонке, http://php.net/manual/en/mysqli.query.php.