일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트
- element 조회
- document
- github
- htmlspecialchars
- jQuery
- 함수
- 객체
- 파이썬
- IF문
- Pwndbg
- window
- sql injection
- lord of sql injection
- 사칙연산
- python
- 백준 파이썬
- suninatas 풀이
- blind sql injection
- 조건문
- 김성엽 대표님
- burp suite
- xss game 풀이
- 백준 알고리즘
- 메소드
- property
- object
- 포인터
- 배열
- xss game
- Today
- Total
power-girl0-0
[ PHP & MySQL ] PHP와 MySQL 연동하기 본문
생활코딩 PHP & MySQL을 참고하여 공부하였습니다.
스스로 공부한 것을 정리하고 복습하기 위한 목적으로 작성하였습니다.
( 출처 : https://opentutorials.org/course/743inf.run/pBzy opentutorials.org/course/3167)
해당 실습에서는 mysqli 방식을 사용하여 실습하였다.
mysql 모니터에 접속할 때 사용하는 명령어를 생각해보자.
"mysql -u root -p <비밀번호> "형식으로 접속한다.
여기서 보통 -h localhost를 생략하며, localhost는 127.0.0.1을 가르키는 특수한 도메인 또는 ip주소이다.
이렇게 접속된 mysql에서는 root라는 권한에 따른 명령이 데이터베이스 서버로 전송이 되는 것이다.
따라서, php와 연동을 하기 위해서는 인증을 가장 먼저 해줘야 한다.
접속
mysqli_connect( )함수를 이용해 인증 후, 접속한다.
해당 함수는 아래와 같은 형식으로 작성해준다.
<?php
mysqli_connect($host, $username, $dbname, $port, $socket);
?>
localhost는 php와 mysql이 같은 위치에 있으므로, 작성해준 것이고 만약 다른 컴퓨터일 경우는 mysql서버가 설치되어 있는 도메인이나 ip주소를 작성해준 것이다.
본 글 작성자는 아래와 같이 입력해주었다.
<?php
mysqli_connect("localhost", "root", "db 비밀번호", "opentutorials");
?>
데이터베이스 추가
mysqli_query()함수를 사용하면 된다.
해당 함수를 이용하여, 접속한 데이터베이스에 쿼리문을 실행시킬 수 있다.
위 접속 함수를 conn이라는 변수에 넣고 실습을 진행하였으며, 사용법은 아래와 같다.
<?php
$conn = mysqli_connect("localhost", "root", "db 비밀번호", "opentutorials");
mysqli_query($conn, "
INSERT INTO topic (
title, description,created
) VALUES (
'MySQL','MySQL insert',NOW()
)"
);
?>
디버그
일단, 위 코드에서 좀 더 쉽게 표현하기 위해 sql문은 따로 변수명에 넣어주었다.
<?php
$conn = mysqli_connect("localhost", "root", "db 비밀번호", "opentutorials");
$sql = "
INSERT INTO topic (
title, description,created
) VALUES (
'MySQL','MySQL insert',NOW()
)"
mysqli_query($conn, $sql);
?>
php는 에러발생시, 결과물을 출력해주지 않는다.
따라서, 에러 발생시 출력되게 하기 위해 mysqli_error()함수를 사용해보자.
echo mysqli_error($conn);
위와 같이, 입력하고 해당 함수가 정상적으로 작동하는지 보기 위해 sql문을 일부로 틀리게 고쳐보았다.
사진과 같이, 에러문이 출력되는 것을 확인할 수 있다.
이것은 조건문을 이용하여 mysqli_query가 실행되지 않는다면, 해당 에러를 출력하게 소스코드를 변경해보자.
<?php
$conn = mysqli_connect("localhost","root","wjdqhqhdks","opentutorials");
$sql = "
INSERT INTO topic (
title, description, created
) VALUES (
'MySQL','MySQL insert',NOW()
)";
$result = mysqli_query($conn, $sql);
if(result === false){
mysqli_error($conn);
}else{
echo "hello";
}
?>
실제로는 echo로 error를 출력해내면 안된다.
에러메시지를 통해, 데이터베이스 테이블이 노출되기 때문이다.
error를 출력하고 싶으면, 파일에 저장해서 확인해야 한다.
'언어 > PHP' 카테고리의 다른 글
[ PHP & MySQL ] PHP & MySQL 보안 (0) | 2021.03.29 |
---|---|
[ PHP & MySQL ] 글 읽기 (0) | 2021.03.29 |
[ PHP & MySQL ] SELECT (0) | 2021.03.29 |
[ PHP & MySQL ] 글 생성 (0) | 2021.03.28 |
[ PHP & MySQL ] web과 mysql 환경 구축 (0) | 2021.03.28 |