Предупреждение: mysqli_query () ожидает как минимум 2 параметра, 1 из которых указан в […]

  • Предупреждение: mysqli_query () ожидает как минимум 2 параметра, 1 из которых указан в C: \ xampp \ htdocs \ Quman \ registar.php в строке 11
  • Предупреждение: mysqli_num_rows () ожидает, что параметр 1 будет mysqli_result, ноль указан в C: \ xampp \ htdocs \ Quman \ registar.php в строке 12
  • Предупреждение: mysqli_query () ожидает как минимум 2 параметра, 1 из которых указан в C: \ xampp \ htdocs \ Quman \ registar.php в строке 23
  • Предупреждение: mysqli_error () ожидает ровно 1 параметр, 0 указано в C: \ xampp \ htdocs \ Quman \ registar.php в строке 23

Код:

    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>";
}
}
}

-2

Решение

Ошибки говорят сами за себя, 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);
}
2

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

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.

0

По вопросам рекламы [email protected]