SQLite 와 php 의 연동

2016.08.11 16:13

졸리운_곰 조회 수:824

SQLite 와 php 의 연동

 

#################################################### 
### PHP 에서 SQLite DB 사용하기 
### 2003/10/28 권기성 : nonots@hanmail.net 
#################################################### 

1. 개요 

    SQLite 의 특징이라면, 설치및 사용이 간단하다는점 
    작고 빠르다는 점, SQL92 라는 표준을 따르므로 다른 DBMS 와 유사한 
    SQL 문을 사용한다는점, 별도의 데몬 프로세스가 떠있지 않다는 점, 
    PHP 5 부터 적극 지원된다는점,,    등을 들 수 있습니다. 

    아직 지원되지 않는 기능은 
http://sqlite.org/omitted.html 에  있습니다. 
    이중에서도 Alter table 이 안된다는게 참 불편하군요.. 

    간단하게 제가 사용해본 SQLite 의 사용법을 보여드리겠습니다. 


2. SQLite 설치 

    - 경로 :  
http://sqlite.org/download.html - 여기 가면  윈도우용, 리눅스용이 있습니다. 
    - 제경우 리눅스용 sqlite-2.8.6 과 sqlite-devel-2.8.6 RPM 을 다운 받아 
    설치했습니다.. 환경설정파일 같은 것도 없고. 데몬을 띄우는 것도 필요 없습니다. 
    그냥 rpm 으로 깔면 끝입니다. 
    - 아래는 간단한 사용례 입니다. 


$ sqlite test_db 
SQLite version 2.8.6 
Enter ".help" for instructions 
sqlite> 
        쉘에서  이렇게만 하면 현재 디렉토리에 test_db 라는 파일이 하나 만들어집니다. 
        이 파일(DB)을 php에서 사용하려면 당연히 웹서버가 읽고 쓸수 있는 권한이 있어야 
        합니다. 

sqlite> create table test_tb ( id int PRIMARY KEY, name varchar(30)); 
        테이블 test_tb 를 만듭니다. 
sqlite> .tables  //테이블목록 보기 
test_tb 
sqlite> .schema test_tb  // 테이블의 구조를 봅니다. 
create table test_tb ( id int PRIMARY KEY, name varchar(30)); 
sqlite> insert into test_tb values ( 1,'권기성'); 
// AUTO_INCREMENT 기능하는 INSERT 
sqlite> insert into test_tb values((SELECT max(id) FROM test_tb)+1,'권기성2'); 
sqlite> select * from test_tb; 
1|권기성 
2|권기성2 

sqlite> create index name_idx on test_tb (name)  ; //인덱스 만들기 

sqlite> begin ; //트랜잭션도 가능 
sqlite> insert into test_tb values ( 3,'김기성'); 
sqlite> select  * from test_tb; 
1|권기성 
2|권기성2 
3|김기성 
sqlite> rollback; //롤백 
sqlite> select * from test_tb; 
1|권기성 
2|권기성2 

sqlite> .output backup.txt //다음줄 select 의 결과가 backup.txt 파일로 저장됨 
sqlite> select * from test_tb ; 
sqlite> .exit //종료 

// 쉘에서 test_db 를 dump 받아서 압축함 ( mysqldump 와 비슷 ) 
$ echo '.dump' | sqlite test_db | gzip -c > test_db.dump.gz //백업하기 
$ zcat test_db.dump.gz | sqlite test_db  //복원하기 



3. PHP 에서 모듈설치 

    - PHP 5 베타 :  --with-sqlite 옵션을 주고 컴파일합니다. 
        (참고로 php 5 에서는 mysql 을 사용하려면 반드시 --with-mysql 을 줘야합니다.) 
        컴파일후 pearDB 를 사용하려면  이 경우도 
        # pear install SQLite  명령어로 sqlite 패키지를 설치해야할겁니다.(아마) 

    - PHP 4.3.3 : 제경우 4.3.3 에서 테스트 했습니다. 최소 가능 버전이 얼마인지는 모르겠습니다. 
        이경우 php 의 최초 컴파일시 --with-sqlite 라는 옵션자체가 없습니다. 
        그러므로 일반적으로 php 컴파일 해서 설치한 후 나중에 
        PEAR 패키지로 따로 설치를 해야합니다. 리눅스 쉘에서 루트 권한으로 

        # pear install SQLite 

        라고 하면  패키지를 자동으로 다운 받아서 소스 풀고 한참  컴파일 합니다. 
        결과적으로 {PHP설치위치}/extensions/no-debug-non-zts-20020429 와 같은 디렉토리에 
        sqlite.so 라는 so 파일이 하나생깁니다. 
        이파일을 {PHP설치위치}/extensions/ 로 복사한후 
        php.ini 파일에서 

        extension=sqlite.so 

        와 같이 동적 모듈을 사용하도록 수정합니다. 
        조심할 점은 php.ini 에서 extension_dir 이  제대로 설정되거나 아니면  주석처리되어 
        디폴트 위치를 찾도록 해야합니다. 

        이렇게 한후 웹서버를 재시작하고,  phpinfo() 로 봤을때 sqlite 항목이 나오면 제대로 
        설치가 된겁니다. 

    - PEAR DB 
        위에서 pear install SQLite 명령시 pear  패키지로 자동 설치하며 
        {PHP설치위치}/php/DB/sqlite.php 라는 파일로 저장됩니다. 
        이 파일을 통해서 sqlite 도 PEAR DB 에서 간편하게 사용가능합니다. 



4. PHP 소스 

    - 간단한 사용법은 아래와 같습니다. DB 연결부분은 쉽게 이해가 가실겁니다. 
    - 실패하기 제일 쉬운 이유는 DB 인 test_db 라는 파일의 경로가 제대로 설정되어야하고 
    웹서버가 읽고 쓸수 있는 권한이 주어져야합니다. 

    <?php 
    // PEAR DB 연결 
    require_once 'DB.php'; 
    require_once 'DB/sqlite.php'; 

    // DSN 정의 - DB 파일의 경로와 퍼미션 주의 
    $dsn = array ( 
        'phptype'   => "sqlite", 'database'  => "./test_db", 
        'mode'      => 0644 
    ); 
    $db = &new DB_sqlite(); 
    $db->connect($dsn, array('persistent'=> true) ); 
    $table = 'test_tb'; // 테이블명 

    //입력 
    $result = $db->query("INSERT INTO $table VALUES (9,'아무개');"); 

    printf("affectedRows:\t\t%s\n<br>", $db->affectedRows() ); 
    printf("getLastInsertId:\t%s\n<br>", $db->getLastInsertId() ); 
    $result = $db->query("SELECT * FROM $table;" ); 
    while($row = $db->fetchrow($result)){ 
        print_r($row ); echo "<br>"; 
    } 
    $db->disconnect(); 
    ?> 



5. 기타 

    - 
http://www.sqlite.org 와 그곳에 있는 링크들의 정보를 참조하세요.. 

    - sqlite 관리툴은 sf.net 에서 sqlite 라는 검색어로 찾아보면 몇개 있습니다. 
        
http://sourceforge.net/projects/sqlite-admin/ 이것은 phpMyadmin 비슷한 php 관리툴인데 
        단점은 php5 가 필요합니다. 
        
http://sourceforge.net/projects/sqlitebrowser/ 이것은 Qt 로된 리눅스용 GUI 입니다. 

    - 위의 사용예에서 보인 pear DB 를 사용하지  않고 ,그냥 php 의 sqlite 함수를 이용하려면 
       
http://kr.php.net/manual/kr/ref.sqlite.php 이곳을 참조하세요..  
 

 

[출처] http://cafe.daum.net/_c21_/bbs_search_read?grpid=zj5e&fldid=2q4W&datanum=49

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
69 [함수] SQLite 와 php 의 연동 졸리운_곰 2017.04.26 58
68 2.워드프레스 소스코드 분석(wp-header.php) 졸리운_곰 2017.04.23 120
67 1.워드프레스 소스 분석(index.php) 졸리운_곰 2017.04.23 263
66 WAMP 설치파일 bitnami bitnami-wampstack-5.6.30-2-windows- file 졸리운_곰 2017.04.15 79
65 rbjn.kr 로봇저널리즘 소스코드 자료 file 졸리운_곰 2017.03.14 61
64 워드프레스 데이터베이스 들여다보기. file 졸리운_곰 2017.02.27 55
63 워드프레스 페이지 분석 file 졸리운_곰 2017.02.27 144
62 워드프레스 템플릿 계층 구조 쉽게 이해하기!(What is Template Hierarchy!?) file 졸리운_곰 2017.02.27 245
61 워드프레스 테마 구조 file 졸리운_곰 2017.02.27 57
60 기본적으로 알아야할 워드프레스 파일 구조 및 디렉터리 구조 file 졸리운_곰 2017.02.27 60
59 워드프레스 웹페이지 구조와 구성요소인 템플릿 파일 이해하기. file 졸리운_곰 2017.02.27 148
58 워드프레스의 기본 구조에 대해 알아보자 file 졸리운_곰 2017.02.27 35
57 워드프레스 DB 쿼리 사용법 총정리 졸리운_곰 2017.02.25 63
56 wordpress Database Description file 졸리운_곰 2017.02.25 49
55 Tour of the WordPress Database file 졸리운_곰 2017.02.25 48
54 Beginner’s Guide to WordPress Database Management with phpMyAdmin file 졸리운_곰 2017.02.25 330
53 Wordpress DB table 파헤치기 file 졸리운_곰 2017.02.09 46
52 워드프레스 영문판 설치 후 한글화 하려면? 졸리운_곰 2017.02.08 33
51 fuelphp 도입부터 scaffolding 사용까지 졸리운_곰 2017.02.06 98
50 cake php 사용법 file 졸리운_곰 2017.01.15 2436
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED