Last active
December 2, 2021 12:42
-
-
Save rkdmf0000/bbd696f541a4a1560dae95371c5cfc29 to your computer and use it in GitHub Desktop.
SQL-OOP 사용법
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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