일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 멤버변수
- 서비스 vs 쓰레드
- 안드로이드 라이선스
- ANR이란
- 안드로이드 유닛 테스트
- 안드로이드 레트로핏 crud
- 2022 플러터 설치
- 안드로이드 레트로핏 사용법
- 객체
- Rxjava Observable
- rxjava cold observable
- 클래스
- 스택 자바 코드
- rxjava hot observable
- rxjava disposable
- 스택 큐 차이
- 안드로이드 os 구조
- android ar 개발
- 2022 플러터 안드로이드 스튜디오
- 큐 자바 코드
- 자바 다형성
- jvm이란
- 안드로이드 라이선스 종류
- 안드로이드 유닛테스트란
- 안드로이드 유닛 테스트 예시
- jvm 작동 원리
- 서비스 쓰레드 차이
- android retrofit login
- 플러터 설치 2022
- ar vr 차이
- Today
- Total
나만을 위한 블로그
[PHP] Undefined index 에러 본문
Undefined index는 구글링 결과 정의되지 않은 색인이라고 한다.
스택 오버플로우에 이 에러와 관련한 질문과 댓글이 있으니 참고할거면 참고하자.
해당 에러는 PHP에서 발생하는 에러다.
내 경우는 회원가입 시 입력한 사용자 정보를 처리하는 php 파일에서 이 에러가 났었다.
문제가 발생한 코드는 이 부분이었다. 수정 전 코드는 복사해두지 않아서 없기 때문에, 수정한 후의 코드를 올린다.
$id=$_GET["id"];
$pw=$_GET["pw"];
$email=$_GET["email"];
SQL문을 날릴 때 쓸 변수를 구하기 위해, 사용자가 입력한 id, pw, email을 GET으로 가져와서 $id, $pw, $email 변수에 각각 넣는다.
물론 회원가입 페이지에서 폼 태그의 메서드도 get으로 맞춰줘야 한다.
난 위에 써진 $_GET["id"];를 원래 $_GET[id]; 라고 썼었는데, 이렇게 하면 안되고 큰따옴표를 id 양 옆에 붙여줘야 제대로 동작했다.
하지만 코드블럭 안의 내용대로 선언했는데도 회원가입이 이뤄지지 않았다.
그래서 내가 다음으로 본 곳은 SQL문을 담은 $query 변수였다.
$query = "INSERT INTO member (id, pw, mail, date, permit) VALUES ('$id', '$pw', '$email', '$date', 0)";
member DB의 각 5개 컬럼에 VALUES() 안에 있는 변수값들을 넣으라는(INSERT INTO) SQL문이었다.
뚫어지게 쳐다보며 아이, 엔, 에스 식으로 한 글자씩 확인하다가 미심쩍은 곳을 발견했다. 바로 mail이라는 컬럼명이었다.
그리고 하이디 SQL로 내 MySQL DB로 들어가 내가 mail 컬럼을 만들었는지 확인했다.
없었다. 그럼 이 컬럼만 추가해주면 정상적으로 될 거라 생각해서, pw와 date 컬럼 사이에 mail 컬럼을 만들어주고 새로고침해서 다시 회원가입을 시도했다.
그러자 정상적으로 회원가입이 이뤄졌고, 로그인도 되고 하이디 SQL에서 SELECT * FROM 문을 날렸을 때도 정상적으로 내가 입력한 값들이 쿼리 결과화면에 나오는 걸 확인했다.
Undefined index 에러는 MySQL에서 DB 컬럼을 빼먹고 냅다 <?php ?> 안에 변수 선언해도 생긴다는 걸 확인했다.
이 실수 때문에 1시간 반 정도 삽질했지만 이것도 나중에는 경험이 될 거라 믿는다.
'PHP' 카테고리의 다른 글
[PHP] 크롬에서 console.log() 사용법 (0) | 2020.01.06 |
---|---|
[PHP] Node.js와 socket I/O를 활용한 웹 실시간 전체 채팅 기능 구현 (0) | 2020.01.05 |
[PHP] INSERT문과 datetime 유형의 기본값 (0) | 2019.12.30 |
[PHP] php7.x, MySQL 8.x 연동 확인하기 (0) | 2019.12.29 |
[PHP] 포트 열기 (0) | 2019.12.28 |