divinity02 Ответов: 2

Как исправить неопределенную переменную в PHP


привет
Я пытаюсь вставить и отобразить изображения в своей базе данных, но в файле insert я получаю эту ошибку

есть ли хоть что-то, что я могу исправить? может ли кто-нибудь указать мне направление? я не прошу никого выполнять это задание, просто ищу какое-то объяснение и какое-то решение для него. это и есть ошибка

Notice: Undefined variable: img_id in C:\wamp64\www\luana_itec244\php\upload.php on line 15


именно это я и пытался сделать.

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

<pre><?php

		session_start();
		
	if(isset($_POST['submit']))
	{

		$db_host='localhost';
		$db_username='root';
		$db_password="";
		
		$con=mysqli_connect($db_host,$db_username,$db_password) or die(mysqli_connect_error());
		
			mysqli_select_db($con, 'food') or die(mysqli_error($con));
			$sql="SELECT * FROM tbl_images WHERE img_id='$img_id'";
			$result=mysqli_query($con, $sql) or die("Error:" .mysqli_error($con));
			$rowcount=mysqli_num_rows($result);
			
			if($rowcount >=1)
			{
				echo"<script type=\"text/javascript\";
						alert('files not uploaded');
						window.location=\"login.html\";
					</script>";
			}
				else
				{
					//insert images into table
					
					$sql = "INSERT INTO tbl_images
					VALUES('img_id','name','image')";
				
					if(mysqli_query($con, $sql))
					{
						mysqli_close($con);
						header("location:dashboard.php");
					}
					else
					{
						echo "Error inserting images";
					}
				}
	}
	
	
?>

2 Ответов

Рейтинг:
0

Mukesh Jakhar

переменная "$img_id" не существует. Вы должны объявить переменную перед ее использованием. использующий ее.
Вы должны сохранить свой идентификатор изображения в переменной $img_id, например: $img_id=5;
Ниже приведен обновленный код, который вы можете использовать, я думаю, что это будет Вам полезно.

<?php
	session_start();		
	if(isset($_POST['submit']))
	{

		$db_host='localhost';
		$db_username='root';
		$db_password="";
		$img_id=5;
		
		$con=mysqli_connect($db_host,$db_username,$db_password) or die(mysqli_connect_error());
		
			mysqli_select_db($con, 'food') or die(mysqli_error($con));
			$sql="SELECT * FROM tbl_images WHERE img_id='$img_id'";
			$result=mysqli_query($con, $sql) or die("Error:" .mysqli_error($con));
			$rowcount=mysqli_num_rows($result);
			
			if($rowcount >=1)
			{
				echo"<script type=\"text/javascript\";
						alert('files not uploaded');
						window.location=\"login.html\";
					</script>";
			}
				else
				{
					//insert images into table
					
					$sql = "INSERT INTO tbl_images
					VALUES('img_id','name','image')";
				
					if(mysqli_query($con, $sql))
					{
						mysqli_close($con);
						header("location:dashboard.php");
					}
					else
					{
						echo "Error inserting images";
					}
				}
	}	
?>


Рейтинг:
0

Patrice T

Похоже на переменную $img_id не существовать. Вы должны создать переменную befire, используя ее.

$sql="SELECT * FROM tbl_images WHERE img_id='$img_id'";

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

Этот тоже странный:
$sql = "INSERT INTO tbl_images VALUES('img_id','name','image')";