Kumar Neeraj Ответов: 2

Предупреждение: mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, логическое значение задано в admin\updatestudent.php на линии 55


mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, логическое значение задано в C:\xampp\htdocs\nick\admin\updatestudent.php на линии 55

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

<?php 
session_start();

if(isset($_SESSION['uid']))
{
echo "";  

}
else
{
header('location: ../login.php');

}
?>
<?php
include('header.php'); 
include('titlehead.php');

?>






<table align="center"><tbody><tr><th>Enter Standerd</th><td>
</td><th>Enter Student Name</th><td></td><td colspan="2"></td></tr></tbody></table>


 
<?php
if(isset($_POST['submit']))
{
include('../dbcon.php');

$standerd = $_POST['standerd'];
$name = $_POST['stuname'];

$sql="SELECT * FROM `studentinfo` WHERE `standerd`='$standerd' AND `name` LIKE `%$name%`  ";
$run=mysqli_query($con,$sql);

if(mysqli_num_rows($run)<1)
{

echo "";
}
else
{
$count=0;
while($data=mysqli_fetch_assoc($run))
{
$count++;
?>  
<?php

}
}


}
?>           

<table align="center" width="80%" border="1" style="margin-top: 10px"><tbody><tr style="background-color: #000; color: #fff"><th>No</th><th>Image</th><th>Name</th><th>ROLL NO</th><th>Edit</th></tr><tr><td colspan="5">No Records Found</td></tr><tr><td><?php echo $count; ?></td><td><img scr="../dataimg/<?php echo $data['image']; ?>" style="max-width:100px;"</td><td><?php echo $data['name']; ?></td><td><?php echo $data['rollno']; ?></td><td>Edit</td></tr></tbody></table>

2 Ответов

Рейтинг:
2

Richard MacCutchan

Это один из самых распространенных вопросов MySQL, задаваемых на этом форуме. И причина в том, что слишком многие программисты не проверяют результаты вызовов функций/методов.

И ответ можно легко найти, прочитав документацию. Если команда MySQL завершается успешно, она возвращает mysqli_result объект. Если это не удается, он возвращает логическое значение false Поэтому, прежде чем использовать результат для следующего оператора, вы должны проверить, является ли он значением false.


Рейтинг:
2

Patrice T

$sql="SELECT * FROM `studentinfo` WHERE `standerd`='$standerd' AND `name` LIKE `%$name%` ";

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