Skip to content

Instantly share code, notes, and snippets.

@rkdmf0000
Last active December 2, 2021 12:42
Show Gist options
  • Save rkdmf0000/bbd696f541a4a1560dae95371c5cfc29 to your computer and use it in GitHub Desktop.
Save rkdmf0000/bbd696f541a4a1560dae95371c5cfc29 to your computer and use it in GitHub Desktop.
SQL-OOP 사용법
<?php
/*
# php5.4 에서 시작해 7.2 까지 지원작업을 해서 다시 문법을 다운그레이드 할 필요가 있음
# 완료의 8할까지 작업을 했었습니다.
==============================================
==============================================
==============================================
@ select 쿼리 생성 예제
[1]
`NAMESPACE\loader->prepare` 메서드로 사용할 테이블을 정의
# 무조건 가장 먼저 해야함 해당 메서드에서 `request` 라는 인스턴스가 반환되기 때문
[2]
`NAMESPACE\request->action` 메서드로 어떠한 동작을 할 것인지 선택
해당 메서드는 1개의 파라미터를 문자열로 받으며
'undefined', 'insert', 'delete', 'update', 'select'
이상의 값만 받음 (undefined는 기본값)
[3]
NAMESPACE\request->where, 및 여러 정의된 메서드로 sql-where 구문을 추가
NAMESPACE\request->whereLike,
NAMESPACE\request->whereBetween,
NAMESPACE\request->whereUni
[4]
`NAMESPACE\request->limit` 메서드는 sql-limit 의 a,b 와 같음
[5]
`go` 메서드는 해당 인스턴스에 저장된 private 된 설정값을들 평문 sql-query 로 변환함과 동시에 result 인스턴스를 반환하고
이전에 사용된 인스턴스의 값들을 모두 먼저 지워버림
[6]
`NAMESPACE\result->fetchrow` 는 결과값의 count 임
`NAMESPACE\result->fetchall` 는 결과값 전부를 배열로 넘김(키가 정수인 배열)
`NAMESPACE\result->fetchone` 는 결과값 하나의 키 이름을 컬럼이름으로 하는 값을 배열로 넘김
*/
$qstd = $mysql->prepare('gongsi_advertise_overdue')->action('select');
$qstd->where(array(
'param1' => $value1,
'param2' => $value2
),'AND','AND')->limit(0,2);
$result_array = $qstd->go()->fetchrow();
/*
==============================================
==============================================
==============================================
@ update 사용법 1
[1]
`NAMESPACE\result->query` 는 select 이외의 쿼리 실행용
*/
##EXAMPLE 1
$point_date_up = $mysql->prepare('gongsi_advertise_detail')->action('update')->where(array(
'param1' => $value1,
'param12' => $value2
))->set(array(
'column1' => $value999
))->go()->query();
/*
@ update 사용법 2
[1]
`NAMESPACE\result->defaultSetValueIsNULL` 는 set 을 사용하는 쿼리에서만 적용되는 메서드
값이 비어있는경우 해당 메서드의 값이 true 로 실행되면 `NAMESPACE\result->go` 실행 시점에서 sql이 인식하는 NULL 로 공백이 대체됨
*/
##EXAMPLE 2
$up = $mysql->prepare('gongsi_advertise_withdraw')->action('update');
$up->set(array(
've_name' => (!empty($d['name']) ? $d['name'] : NULL),
've_title' => (!empty($d['title']) ? $d['title'] : NULL),
've_date' => (!empty($d['date']) ? $d['date'] : NULL),
've_amount' => (!empty($d['amount']) ? $d['amount'] : NULL),
'reg_id' => $this->user['idx'],
'reg_nick' => $this->user['user_id'],
'reg_ip' => $ins_tool->get_ip(),
'update_date' => $current_date
));
$up->where(array(
'parent_board' => $article,
'parent_detail_idx' => $rowdata,
'idx' => $d['idx'],
'draw_type' => $drawtype
),'AND','AND');
$up->defaultSetValueIsNULL(true);
$up->go()->query();
/*
==============================================
==============================================
==============================================
@ delete 사용법
`where` 와 동일하다 다만 결과값을 받지 않음으로 `NAMESPACE\result->query` 로 끝낸다
*/
$delete_qstd = $mysql->prepare('gongsi_advertise_withdraw')->action('delete');
$delete_qstd->where(array(
'parent_board' => $article,
'parent_detail_idx' => $rowdata,
'idx' => $idx,
'draw_type' => $drawtype
));
$delete_qstd->go()->query();
/*
그 외에도 insert 라던지 가능하다
복잡한 구문은 OOP 처리하기 복잡하여
*/
$mysql->query('UPDATE TABLE_NAME SET param1 = ? WHERE param2 = ? ',
array(
$system->make_ver_count($ver_num),
$get_drive['parent_idx'])
);
$mysql->fetchall("SOME QUERY");
$mysql->fetchone("SOME QUERY");
//fetchrow
//last_insert_id
//ufetchone 뭐에 쓰던건지 기억이 안남
/*
이상 적당히 손만보면 쓸만합니다.
*/
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment