IDKMayb3 Ответов: 2

Ошибка в PHP:предупреждение: mysqli_num_rows() ожидает...


Полный текст сообщения об ошибке:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in __________ on line 16


Мой код: (цензура по вопросам конфиденциальности)

<?php

session_start();

$con = mysqli_connect('localhost','__________________','__________');

mysqli_select_db($con, '_____________________');

$email = $_POST['email'];
$pws = $_POST['psw'];

$s="select * from 'usertable' where email = '$email' && pws = '$pws'";

$result = mysqli_query($con, $s);

$num = mysqli_num_rows($result);

if($num == 1) {
        header('location:index.html');
    }else{
}

?>


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

Я попытался изменить mysqli_num_rows($result); на mysqli_result($result);

2 Ответов

Рейтинг:
2

Patrice T

$s="select * from 'usertable' where email = '$email' && pws = '$pws'";

Не обязательно решение вашего вопроса, но у вас есть еще одна проблема.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Рейтинг:
2

Richard MacCutchan

Посмотрите на документацию для РНР: в mysqli::запрос - руководство по эксплуатации[^ команда], которая объясняет, какие типы результатов могут быть возвращены.