mehdiazizrafi Ответов: 2

Как решить неопределенный идентификатор переменной?


From a user signup database I want to show some specific tables from database according to user. Like in your social media profile you have only your informration. But my code showing id(auto incremented) is undefined.


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

$db = mysqli_connect('localhost', 'root', '', 'regi');
$sql = "SELECT * FROM user where id='$id'";
$records= mysqli_query($db, $sql);
while($row=mysqli_fetch_assoc($records)){
	 $_SESSION["username"][]= $row["username"];
}

Richard MacCutchan

Где id определено, а где находится $id определились?

mehdiazizrafi

*id* - это из таблицы user базы данных *regi*. Как я могу определить идентификатор?

Richard MacCutchan

Но в сообщении об ошибке говорится, что он не определен, так что здесь что-то не так.

mehdiazizrafi

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

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Но мой код, показывающий id(автоматически увеличенный), не определен.

Нам нужно знать структуру базы данных.
$id это переменная php, введенная в sql-запрос, но она не определена в наборе СНиПов кода.
$sql = "SELECT * FROM user where id='$id'";

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


mehdiazizrafi

Итак, как я могу решить эту "SQL-инъекцию"?

Patrice T

см. ссылки в решении, чтобы узнать больше о sql-инъекции

mehdiazizrafi

да. прохождение. Спасибо Манн

Рейтинг:
1

OriginalGriff

Вам нужно посмотреть на это в контексте всей системы: скорее всего, вам нужно посмотреть на определение вашего user таблица в вашей БД и проверьте, включает ли она столбец под названием "id". Если это не так, то при попытке выбрать его вы получите ошибку SQL.


mehdiazizrafi

да. он имеет четыре столбца: id(ai), имя пользователя, адрес электронной почты, пароль

OriginalGriff

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

mehdiazizrafi

отладчик!?

OriginalGriff

Как вы дошли до того, что пишете код, не зная, что такое отладчик и как его использовать?

Отправляйся в Гугл вместе с тобой! :смеяться: