오픈소스를 모아보자1 - PDO DB Class 정보
오픈소스를 모아보자1 - PDO DB Class본문
먼저 그누보드의 db처리는 쉬워보이지만, 모듈화가 되어 있지 않아서 아쉬운 부분이 많습니다.
특히 파라메타 bind 를 사용하지 않고, php 변수를 직접 쿼리에 넣는 방식을 쓰는데, SQL Injection 의 원인이 됩니다.
이글에서도 간략히 얘기했지만, 보안을 생각한다면, PDO는 필수사항입니다.
따라서 그누보드 RestApi 서비스를 만들때, PDO를 쉽게 사용할수 있도록 Wrapper 파일이 하나 필요합니다.
(프레임웍을 쓴다면, 프레임웍에서 제공하는 기능을 쓰면 됩니다. ORM도 좋긴한데, 저는 안쓸것 같습니다. 그누보드DB에 ORM은 어울리지 않습니다.)
github에서 검색해보니 심플한 프로젝트가 하나 있습니다. PHP class 파일이 3개이고, Apache2.0 라이센스입니다.
https://github.com/lincanbin/PHP-PDO-MySQL-Class/blob/master/src/PDO.class.php
저는 이걸 조금 고쳐서 써볼려고 합니다. 파일3개도 많거든요. 일단 필요한 기능 위주로 1개로 통합합니다.
사용법도 단순하고, bind같은 복잡한것도 쉽게 처리해줍니다.
$db->query("UPDATE g5_member SET mb_login=now() WHERE mb_id = :mb_id", ['mb_id'=>'test01']);
$row = $db->row("SELECT * FROM g5_member where mb_id = :mb_id", ['mb_id'=>'test01']);
$rows = $db->query("SELECT * FROM g5_write_notice WHERE wr_is_comment=0 ORDER BY wr_id DESC LIMIT 0, 30");
$total_count = $db->single("SELECT count(*) cnt FROM g5_write_notice WHERE wr_is_comment =0");
이외에 간단한 쿼리 빌더용 메소드도 있습니다.
ps) 그누보드 자체에 PDO를 지원하는 코드 추가했으면 합니다. sql_query 에 mysqli_ 함수가 아닌 클래스형으로 지원했으면 좋겠습니다.. 물론 희망사항입니다.
!-->
추천
0
0
댓글 1개
그누보드 5에 넣기에는 PDO 와 mysqli는 커넥션 관리하는게 달라서 mysqli로 된 커스텀 DB 라이브러리가 필요하겠습니다