divinity02 Ответов: 2

Почему моя вставка дает мне этот результат? Он пытается мне что-то сказать?


Я пытаюсь вставить, и это результат, который я получаю.

он пытается вставить его, но вместо этого натыкается на корягу. как я могу это исправить? вот ошибка, которую я получаю

0){
    echo "";
}
else
{//insert data into table
    $sql = "INSERT INTO membersVALUES('$title', '$firstname', '$lastname', '$username', '$email', '$gender', '$services', '$address', md5('$mypwd'))";
    if(mysqli_query($conn,$sql)){echo "";
    $row=mysqli_fetch_array($result);
    mysqli_close($conn);
}
else
{
    echo "Error inserting values into database";
}//end of line
}
}
*/ ?> 


и вот это то, что я попробовал. третий глаз и любая помощь будут очень оценены спасибо

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

<pre><?php<?php

		
		 if(isset($_POST['Enter']))
		{
			
			//Capture values from form and store in php variables
			$title=$_POST['title'];
			$firstname=$_POST['firstname'];
			$lastname=$_POST['lastname'];
			$username=$_POST['username'];
			$email=$_POST['email'];
			$gender =$_POST['gender'];
			$services=join(",", $_POST['services']);                                                                                                                                    
			$address=$_POST['address'];
			$mypwd=$_POST['mypwd'];
			
		

			//Create and check connection to the server
			include'db_server.php';
				
			
				
			//Query the database 
			$sql="SELECT * FROM members WHERE username='$username'";
			
			$result=mysqli_query($conn,$sql) or die("Error:" .mysqli_error());
			
			$rowcount=mysqli_num_rows($result);
			
				if($rowcount>=1)
				{
					echo "<script type=\"text/javascript\">
							alert('Username already exist');
							window.location=\"../xhtml/login_user.html\";
						</script>";
				}
				else
				{
					//insert data into table
					$sql="INSERT INTO members 
						  VALUES('$title', '$firstname', '$lastname', '$username', '$email', '$gender', '$services', '$address', md5('$mypwd'))";
					
					if(mysqli_query($conn, $sql))
					{
						 $row=mysqli_fetch_array($result);
						mysqli_close($conn);
					
						echo "<script type=\"text/javascript\">
								 alert('Welcome!! $firstname $lastname, you are now a member of the Caribbean Nature Seekers Institute TT(CNSITT)');
								window.location=\"../xhtml/congrats.html\";
							</script>";
					}
				
					else
					{
						echo "Error inserting data in the members table";
										
					}
				}	
		}

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
вот ошибка, которую я получаю

Вы не показываете никакого сообщения об ошибке, просто дамп кода!
Возможно, использование отладчика позволит вам понять, что происходит.

$sql="INSERT INTO members VALUES('$title', '$firstname', '$lastname', '$username', '$email', '$gender', '$services', '$address', md5('$mypwd'))";

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


Рейтинг:
1

OriginalGriff

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

Поэтому начните с того, что Патрис sugestoes и преобразования всего вашего приложения в параметризованные запросы, а затем начните смотреть на таблицу БД и порядок столбцов.
Я бы предположил, что у вас есть автоматически сгенерированный столбец идентификаторов в начале - столбец идентификаторов - и это вызывает проблему.
Если это так, то решение состоит в том, чтобы ВСЕГДА перечислите столбцы, в которые вы хотите вставить данные, в том порядке, в котором вы их предоставите:

INSERT INTO MyTable (Column2, Column3) VALUES (Value2, Value3)
Если вы этого не сделаете, SQL будет начинаться с первого столбца и просто двигаться дальше. Если первый столбец является столбцом идентификатора, вы не можете указать его значение, и вставка будет отклонена.


divinity02

@originalGriff, как вы можете загрузить картинку на этот сайт, я хотел бы загрузить фотографию БД, в которую я пытаюсь вставить

OriginalGriff

Ты не можешь. Есть некоторые, кто с удовольствием разместит "неподходящие" фотографии, и у нас нет достаточного количества добровольцев, чтобы модерировать каждый пост.

И зачем мне нужен какой-то образ? Copy'n'paste определения таблицы в виде текста может быть вставлен в SQL, чтобы создать ту же таблицу для тестирования ... не будьте так ленивы! :смеяться:

divinity02

Итак, вот моя таблица в последовательности.

название, имя, фамилия, имя пользователя,адрес электронной почты, пол,услуги, адрес, mypwd

вот так моя таблица настроилась и я не ленивый Эх, был на этом задании уже давно и именно с вставкой были проблемы, она вставлялась в одно время и по какой-то причине ее перестали вставлять и уже не извлекали