대가는 결과를 만든다

php-psql 접속, 쿼리 예시 본문

개발/php

php-psql 접속, 쿼리 예시

yunzema 2018. 5. 29. 14:30
반응형


1.psql접속

1
2
3
4
5
6
7
8
9
10
11
12
<?php
    
    $db_host="host=localhost";    //접속할 IP: 서버 PHP에서 해당 로컬 호스트 DB로 접속하기에 localhost
    $db_port="port=5432";        //접속할 포트
 
    $db_pw="user=postgres password=*******";    //DB접속 user와 pw정보 문자열로 저장
    $db_name="dbname=*****";                 //접속할 데이터베이스의 이름 저장
 
    //psql접속하는 명령어 :  host, port, dbname, user, password
    $connect_db=pg_connect("$db_host $db_port $db_name $db_pw");
 
?>
cs


각 변수에 postgresql에 접속하기 위한 정보를 저장한 후에 pg_connect()함수를 통해 접속


2.에러로그 출력


1
2
3
4
5

 
echo pg_last_error($connect_db);    
//해당 접속에 대해 에러로그를 출력하는 명령어
 

cs


에러출력 명령어. psql관련 에러 발생시 에러로그 출력!




3.쿼리 실행

3.1 INSERT, DELETE


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
  
  include $_SERVER["DOCUMENT_ROOT"]."/connect_psql.php";    //psql에 접속하는 부분 따로 분리하여 접속할때마다 인클루드하여 사용
 

  $stream_filename = "'".$_POST['stream_filename']."'";        //**psql에서는 문자열을 다룰때 ' '가 필요하다. 없으면 안됨!
 

  $insert_query = 'INSERT INTO "LiveChatmsgListTable" (member_nm, chatmsg, msg_timestamp, stream_filename)
                   VALUES ('.$member_nm.', '.$chatmsg.', '.$msg_timestamp.', '.$stream_filename.')';
                   //**테이블명에 대소문자 구별이 있는 경우 " "가 없으면 안됨!!
            

  $insert_result =pg_query($connect_db$insert_query);        //쿼리 실행 문
 

  //성공여부 체크해서 그에 따른 결과 출력
  if($insert_result)
    echo "save_success";
  else{
    echo "save_failed : ";
    echo pg_last_error($connect_db);    //에러츌룍문
  }
 
?>
cs


쿼리 실행하는 부분 주의

- " " , ' ' 사용하는 부분에서 MYSQL과 달라서 삽질을 좀 함

- 테이블명이나 컬럼명에 대소문자 구별이 있다면 " "이 꼭 필요함 **

- 컬럼에 들어가는 값이 문자열이면 ' '이 꼭 필요함 ( 없는 경우 핸드폰 번호의 경우 010-2323-2333 을 문자열로 인식하지 않고 숫자로 인식해 연산한 값이 들어감 )


ex) 컬럼명에 대문자 포함된 경우 DELETE 쿼리 예시


1
2
3
4
5
6
  
 $delete_hpnum_query='DELETE FROM "AuthnumTable" WHERE "HpNum"='.$HpNumForInsert;
 $delete_hpnum_query_result = pg_query($connect_db$delete_hpnum_query);

cs




3.2 SELECT 첫번째 방법



1
2
3
4
5
6
7
8
<?php
  
        //회원정보 테이블에서 파라미터로 전달받은 아이디가 존재하는지 검색
        $idcheck_query = 'SELECT count(member_name) FROM "MemberTable" WHERE member_id='.$input_id;    //쿼리
        $idcheck_query_result =pg_query($connect_db$idcheck_query);    //쿼리 결과
        $check_result = pg_fetch_result($idcheck_query_result00);
 
?>
cs




3.3 SELECT 두번째 방법
(여러 데이터 가져와 JSONObject, Array형태로 만들기)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
  
$select_chatlist_query = 'SELECT member_nm, chatmsg, msg_timestamp FROM "LiveChatmsgListTable"
                            WHERE stream_filename ='.$stream_filename.' ORDER BY msg_timestamp ASC';
$select_chatlist_result = pg_exec($connect_db$select_chatlist_query);
 
$get_result = array();
//성공적으로 쿼리 실행한 경우
if($select_chatlist_result){
    while($row = pg_fetch_assoc($select_chatlist_result)){
      array_push($get_result,
            array('member_nm' => urlencode($row['member_nm']),
                  'chatmsg' => urlencode($row['chatmsg']),
                  'msg_timestamp' => urlencode($row['msg_timestamp'])
          ));
    }
    echo urldecode(json_encode($get_result));
}
else{
  echo "failed";
  echo pg_last_error($connect_db);
}
 
?>
cs







*기타

MYSQL에서 보던 자료형은 VARCHAR(10) 형태는 PSQL에서는 char varying(10)형태로 사용됨

MYSQL에서 쓰던 DATETIME 자료형이 보이지 않아 DATE와 TIME을 따로 저장함

'개발 > php' 카테고리의 다른 글

php라우팅 라이브러리 : phroute  (0) 2018.12.18
composer  (0) 2018.12.18
PDO  (0) 2018.12.13
php curl이란?  (0) 2018.06.06
php에서 json으로 받아 파싱하기  (0) 2018.05.29
Comments