ericko_254 Ответов: 1

Предупреждение: mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, bool задан в C:\wamp64\www\loginregister\register.php на линии 35


строка 35 : if (mysqli_num_rows($usernameQuery) > 0) {
echo "Username уже используется: выберите другое имя пользователя";

Я написал регистрационный код но по окончании работы и мне была принесена следующая ошибка :
Предупреждение: mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, bool задан в C:\wamp64\www\loginregister\register.php на линии 35

Что я уже пробовал:

<?php
require "conn.php";

$username = $_POST["$username"];
$email = $_POST["$email"];
$password = $_POST["$pass"];
$mobile = $_POST["$mobile"];
$gender = $_POST["$gender"];


$isValidEmail = filter_var($email,FILTER_VALIDATE_EMAIL);

if ($conn){
  if (strlen($password) < 6 || strlen($password) > 40) {
    // code...
    echo "password should be more than 6 characters";
  }elseif ($isValidEmail === false ) {
    // code...
    echo "Please write a valid email";
  }
  else {
    $sqlCheckUsername = "SELECT * FROM 'users_table' WHERE 'username' LIKE '$username' ";
    $usernameQuery = mysqli_query($conn,$sqlCheckUsername);

    $sqlCheckEmail = "SELECT * FROM 'users_table' WHERE 'email' LIKE '$email' ";
    $usernameQuery = mysqli_query($conn,$sqlCheckEmail);

    if (mysqli_num_rows($usernameQuery) > 0) {
      echo "Username is already used: Pick another username";
    }elseif (mysqli_num_rows($usernameQuery) > 0) {
      echo "email is already registered";
    }
    else {
      $sql_register = "INSERT INTO 'users_table'(`username`,`email`,`password`,`mobile`,`gender`) VALUES ('$username','$email','$password','$mobile','$gender')";
    }
    if (mysqli_query($conn,$sql_register)) {
      echo "Registration Successful";
    }
    else {
      echo "Failed to Register";
    }
  }
}
else {
  echo "connection error: Check Your Connection and Try again";
}

?>

Richard Deeming

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк / интерполяцию для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

PHP: SQL-инъекция - руководство пользователя[^]
РНР: Подготовленные инструкции и хранимые процедуры - руководство пользователя[^]

Что касается вашего вопроса, то вставка ошибки в Google даст вам ответ. Или просто посмотрите на "связанные вопросы" в правой части страницы.

Richard Deeming

Кроме того, вы храните пароли в виде обычного текста. Не делай этого.

PHP: password_hash[^]
РНР: функцию password_verify[^]

ericko_254

Спасибо