본문 바로가기

2021/web

웹 스터디 4주차 - php & mysql(1)

 


  1. mysqli_query();

Untitled image

mysqli_query();는 실패했을 때 false를 리턴한다. 그렇다면 정상적으로 쿼리문이 주어졌을 때(정확하게는, SELECT, SHOW, DESCRIPE, EXPLIN 쿼리가 주어졌을 때)의 리턴 값은 무엇인지 알아보기 위해 var_dump(); 함수를 사용해 보았다.

Untitled image

그 결과 위와 같이 mysqli_result라는 객체가 리턴됨을 알 수 있었다. 이 객체에는 쿼리문을 통해 선택된 데이터들에 대한 여러 정보가 저장되어 있다.

mysqli_result에 대한 정보 : https://www.php.net/manual/en/class.mysqli-result.php

Untitled image

이 객체에 저장된 정보 중 특정 정보만을 가져오고 싶을 때는 ->를 사용한다. (여기서 num_rows는 행의 개수를 의미한다.)

2. mysqli_fetch

mysqli_query()를 통해서 가져온 데이터를 php에서 사용하기 위해서는 이를 php 문법에 맞게 변환하는 작업이 필요한데, 이를 수행하는 함수가 mysqli_fetch함수이다. 데이터를 어떤 데이터 타입으로 변환하는지에 따라 크게 fetch_row, fetch_assoc, fetch_array, fetch_object로 나뉜다고 한다.

mysqli_fetch_row() : 인덱스가 숫자인 배열로 리턴

mysqli_fetch_assoc() : column명을 인덱스로 하는 배열로 리턴

mysqli_fetch_array() : 인덱스가 숫자, column명인 배열로 리턴

mysqli_fetch_object() : 인덱스가 column명인 객체로 리턴

Untitled image

print_r() 함수를 사용하여 mysqli_fetch_array 함수의 리턴값을 확인해 보았다.

Untitled image

위와 같이 숫자와 column명을 인덱스로 하는 배열이 생성된다.

숫자 인덱스만으로 데이터를 가져올 수 있는 배열을 배열이라고 하고, column명을 통해 데이터를 가져올 수 있는 배열을 연관배열이라고 한다.

1) 하나의 행만을 가져오는 경우

Untitled image

하나의 행의 정보만을 배열에 저장하고 싶다면 위와 같이 WHERE을 사용할 수 있다.

2) 모든 행을 가져오는 경우

Untitled image

Untitled image

mysqli_fetch_array 함수는 함수를 호출할 때마다 인자로 주어진 쿼리문의 결과를 하나의 row씩 리턴한다는 특징이 있다. 모든 데이터가 리턴되어 더 이상 리턴될 데이터가 없는 경우 NULL을 리턴한다.

Untitled image

이 점을 이용해 while문을 사용해서 $result의 모든 데이터를 출력해 보았다.

Untitled image

Untitled image

Untitled image

Untitled image

 

    • 태그를 사용하여 전체 글 목록을 출력하고자 할 때. 위와 같이 하나의 변수($list)에 모든 코드들을 저장해 출력할 수 있다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class WhyMethod {
    public static void main(String[] args) {
        PrintTwoTimesA();    
        PrintTwoTimesA();    
        PrintTwoTimesA();
 
    }
 
    public static void PrintTwoTimesA() {
        System.out.println("-");
        System.out.println("A");
        System.out.println("A");
    }
 
}
 
cs

 

'2021 > web' 카테고리의 다른 글

php -'(싱글 쿼터)와 "(더블 쿼터), 그리고 중괄호  (0) 2021.07.16
웹 스터디 3주차 - MySQL(1)  (0) 2021.07.15
웹 스터디 3주차 - php(2)  (0) 2021.07.06
웹 스터디 2주차 - php(1)  (0) 2021.01.17
웹 해킹 2주차 - XSS game 01  (0) 2021.01.17