database.sarang.net
UserID
Passwd
Database
ㆍDBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DBMS Devel 1068 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 1068
SQLite 와 PHP의 연결
작성자
정재익(advance)
작성일
2005-01-03 17:14ⓒ
2005-01-03 17:15ⓜ
조회수
17,552

####################################################
### 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://www.phpschool.com/bbs2/inc_view.html?id=9741&code=tnt2&start=1110&mode=&field=&search_name=&operator=&period=&category_id=&s_que=

이 글에 대한 댓글이 총 1건 있습니다.
노정호님이 2005-01-04 10:00에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1068SQLite 와 PHP의 연결 [1]
정재익
2005-01-03
17552
461리눅스 쓰레드 프로그래밍
정재익
2002-07-22
15581
177멀티미디어 데이터베이스 기술
정재익
2001-12-14
20446
133비트 파워프로젝트/자동차보험사의 데이터 마이닝 시스템 구축
정재익
2001-12-06
19569
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다