Member 13756122 Ответов: 1

Как решить эту проблему? Правильный вывод не отображается. Предупреждение: mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, логическое значение задано в C:\xampp\htdocs\sms\admin\upstu.php на линии 49


<?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 Standard  </th><td>     </td></tr><tr><th>  Enter Student Name </th><td>  
   </td></tr><tr><td></td><td colspan="2"></td></tr></tbody></table>


<?php
if(isset($_POST['submit']))
{
 	include('../dbcon.php');
 	$standard=$_POST['std'];
 	$name=$_POST['name'];
 	$sql="SELECT * FROM `student` WHERE `standard`='$standard' 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
  
}
}
}
?>


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

Я попробовал поискать в google. Но я не получил никаких подсказок, как устранить эту ошибку. Я пробовал и другие способы, но ничего не помогает.
<table align="center" width="80%" border="1" style="margin-top: 10px"><tbody><tr><th>No</th><th>Img</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></td>		<td> <?php echo $data['name']; ?> </td>		<td>  <?php echo $data['rollno']; ?> </td>		<td>  EDIT </td>	</tr></tbody></table>

0x01AA

Попробовать это: Гугл[^]

1 Ответов

Рейтинг:
1

Patrice T

$sql="SELECT * FROM `student` WHERE `standard`='$standard' AND `name` LIKE '%$name%'";

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


0x01AA

Извините, не вижу в коде, где он конкатенирует SQL. Еще мне не хватает той части, где он правильно определяет/устанавливает параметр :-)

Пожалуйста, сделайте себе одолжение и не публикуйте шаблонные ответы там, где они не подходят ;)

OriginalGriff

Извините, но PHP отвратителен в этом отношении:

$стандарт SQL...";

включает в себя содержимое переменной $standard в самой струне - вот о какой конкатенации говорил пполиморф.

0x01AA

- Спасибо, сэр.

OriginalGriff

Всегда пожалуйста!

Patrice T

Спасибо за защиту.

Patrice T

Привет,
спасибо Вам за это сообщение, Я предпочитаю такой комментарий, где можно спорить или объяснять вещи, а не анонимный даунвот.
Как уже сказал ОГ, php-это гадость.
Я надеюсь, что вы не возражаете против стандартных ответов, SQL-инъекция так распространена!

0x01AA

Я еще раз усвоил: не отвечайте/не комментируйте то, в чем вы не уверены.

Прости меня за это!

Patrice T

Добро пожаловать.
Я тоже все еще учусь.

OriginalGriff

Я не говорил, что "PHP-это гадость".

Я просто мысль это... :смех:

0x01AA

Вы написали это ;p

OriginalGriff

Это называется "вырвать цитату из контекста" и обычно не одобряется.

0x01AA

Теперь вы заявите на меня как на оскорбителя ? :(

OriginalGriff

Зачем мне это делать? :смеяться:
Ты сделал что-то оскорбительное, о чем я не знаю?

Patrice T

Приношу свои извинения за то, что сократил цитату :)

OriginalGriff

Нет проблем - это именно то, о чем я думал! :смеяться: