Member 13964266 Ответов: 2

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


$name= stripslashes (trim($_POST['name']));
		$surname= stripslashes (trim($_POST['surname']));
		$email= stripslashes (trim($_POST['email']));
		$password= stripslashes (trim($_POST['password']));
		$age= stripslashes (trim($_POST['age']));
		$cellphone= stripslashes (trim($_POST['cellphone']));
		$address= stripslashes (trim($_POST['address']));
	    
		$query=mysql_($conn, "INSERT INTO 'students' ('null' ,'$name', '$surname', '$email', '$password', '$age', '$cellphone', '$address',)");
		$result = mysqli_query($conn, $query);


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

$name= stripslashes (trim($_POST['name']));
		$surname= stripslashes (trim($_POST['surname']));
		$email= stripslashes (trim($_POST['email']));
		$password= stripslashes (trim($_POST['password']));
		$age= stripslashes (trim($_POST['age']));
		$cellphone= stripslashes (trim($_POST['cellphone']));
		$address= stripslashes (trim($_POST['address']));
	    
		$query=mysql_($conn, "INSERT INTO 'students' ('null' ,'$name', '$surname', '$email', '$password', '$age', '$cellphone', '$address',)");
		$result = mysqli_query($conn, $query);

Richard MacCutchan

Ваше назначение $query недопустимо.

2 Ответов

Рейтинг:
2

Jochen Arndt

Чтобы получить помощь, вы должны помочь нам помочь вам.

Это включает в себя использование соответствующего тега (он выглядит как PHP, а не C++) и предоставление полного сообщения об ошибке.

Сообщение об ошибке содержит имя файла, номер строки, а иногда и номер столбца. Таким образом, вы будете точно знать, где компилятор не смог обработать код. Дайте нам эту информацию, скопировав и вставив полное сообщение об ошибке и указав строку в вашем опубликованном коде (не ожидайте, что кто-то здесь будет считать строки, которые даже бесполезны, если не показывать полный код).

При выполнении всего вышеперечисленного вы, возможно, даже сможете решить эту проблему самостоятельно. Ошибка называется "неопределенный индекс". Сообщение содержит также имя индексной переменной.

Другой вариант-поиск в интернете. Использование чего-то вроде "php post undefined index" уже скажет вам, что не так:
Ошибка возникает при использовании именованного индекса для массива, а такого элемента в массиве нет.

Это довольно часто встречается с $_POST массив при вызове кода не с веб-страницы, предоставляющей данные POST. Это решение тоже довольно распространено и PHP предоставляет функцию для этой цели: PHP: isset - руководство пользователя[^].

Пример:

if (isset($_POST['name']))
{
    $name= stripslashes (trim($_POST['name']));
}

Заметьте также, что здесь нет mysql_() функция к тому же вы ее где то определили и что ваш SQL INSERT команда ошибочна (она должна быть INSERT INTO table_name VALUES (list);). Не совсем уместно здесь, но для наблюдения: PHP: SQL-инъекция - руководство пользователя[^].


Рейтинг:
0

Patrice T

Цитата:
Как мне...исправить неопределенную ошибку индекса

Это означает, что один из $_POST['фамилия'] не существует.
Точное сообщение об ошибке и номер строки помогут узнать, какой именно.

$query=mysql_($conn, "INSERT INTO 'students' ('null' ,'$name', '$surname', '$email', '$password', '$age', '$cellphone', '$address',)");


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