SQLite-PHP
설치
SQLite3 확장은 PHP 5.3.0부터 기본적으로 활성화되어 있습니다. SQLite3 확장은 --without-sqlite3을 사용하여 컴파일 타임에 비활성화할 수 있습니다.
Windows 사용자는 이 확장 프로그램을 사용하려면 php_sqlite3.dll을 활성화해야 합니다. PHP 5.3.0부터 이 DLL은 Windows 배포판 PHP에 포함되었습니다.
자세한 설치 지침을 보려면 PHP 튜토리얼과 공식 웹사이트를 확인하는 것이 좋습니다.
PHP 인터페이스 API
다음은 PHP 프로그램에서 SQLite 데이터베이스를 사용하기 위한 요구 사항을 충족할 수 있는 중요한 PHP 프로그램입니다. 더 자세한 내용이 필요하면 공식 PHP 문서를 확인하세요.
일련번호 | API 및 설명 |
---|---|
1 | 공용 SQLite3 ::open ( 파일 이름, 플래그, 암호화_키 ) SQLite 3 데이터베이스를 엽니다. 빌드에 암호화가 포함된 경우 사용하려는 키입니다. 파일 이름 filename에 ':memory:' 값이 할당되면 SQLite3::open()은 RAM에 메모리 내 데이터베이스를 생성합니다. 이는 세션 기간 동안만 지속됩니다. filename이 실제 장치 파일 이름인 경우 SQLite3::open()은 이 매개 변수 값을 사용하여 데이터베이스 파일을 열려고 시도합니다. 해당 이름의 파일이 없으면 해당 이름의 새 데이터베이스 파일이 생성됩니다. 선택적 플래그는 SQLite 데이터베이스를 열지 여부를 결정하는 데 사용됩니다. SQLITE3_OPEN_READWRITE를 사용할 때 기본적으로 켜져 있습니다. SQLITE3_OPEN_CREATE | |
2 | public bool SQLite3::exec ( string $query ) 이 루틴은 A 단축키를 제공합니다. SQL 명령을 실행하기 위한 SQL 명령은 sql 매개변수에 의해 제공되며 여러 SQL 명령으로 구성될 수 있습니다. 이 프로그램은 주어진 데이터베이스에 대해 결과 없이 쿼리를 실행하는 데 사용됩니다. |
3 | public SQLite3Result SQLite3::query ( string $query ) 이 루틴은 SQL을 실행합니다. 쿼리에서 쿼리가 결과를 반환하면 SQLite3Result 개체가 반환됩니다. |
4 | public int SQLite3::lastErrorCode( void ) 이 루틴은 가장 최근의 실패를 반환합니다. SQLite 요청에 대한 숫자 결과 코드입니다. |
5 | 공개 문자열 SQLite3::lastErrorMsg( void ) 이 루틴은 가장 최근의 실패를 반환합니다. SQLite 요청에 대한 영어 텍스트 설명입니다. |
6 | public int SQLite3::changes (void) 이 루틴은 가장 최근의 SQL 문에 의해 업데이트, 삽입 또는 삭제된 데이터베이스 행 수입니다. |
7 | public bool SQLite3::close (void) 이 루틴은 SQLite3을 닫기 전에 호출됩니다. ::open() 데이터베이스 연결을 엽니다. |
8 | 공개 문자열 SQLite3::escapeString ( string $value ) 이 루틴은 문자열을 반환합니다. SQL 문에서는 보안상의 이유로 문자열이 올바르게 이스케이프됩니다. |
데이터베이스 연결
다음 PHP 코드는 기존 데이터베이스에 연결하는 방법을 보여줍니다. 데이터베이스가 존재하지 않으면 데이터베이스가 생성되고 데이터베이스 개체가 반환됩니다.
<?php class MyDB extends SQLite3 { function __construct() { $this->open('test.db'); } } $db = new MyDB(); if(!$db){ echo $db->lastErrorMsg(); } else { echo "Opened database successfully\n"; } ?>
이제 위 프로그램을 실행하여 현재 디렉토리에 test.db 데이터베이스를 생성해 보겠습니다. 필요에 따라 경로를 변경할 수 있습니다. 데이터베이스가 성공적으로 생성되면 아래와 같은 메시지가 표시됩니다.
Open database successfully
Creating table
다음 PHP 코드 조각은 이전에 생성된 데이터베이스에 테이블을 생성하는 데 사용됩니다.
<?php class MyDB extends SQLite3 { function __construct() { $this->open('test.db'); } } $db = new MyDB(); if(!$db){ echo $db->lastErrorMsg(); } else { echo "Opened database successfully\n"; } $sql =<<<EOF CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL); EOF; $ret = $db->exec($sql); if(!$ret){ echo $db->lastErrorMsg(); } else { echo "Table created successfully\n"; } $db->close(); ?>
위 프로그램이 실행되면 test.db에 COMPANY 테이블이 생성되고 아래와 같은 메시지가 표시됩니다.
Opened database successfully Table created successfully
INSERT 작업
아래 PHP 프로그램은 위에서 생성된 COMPANY 테이블에 레코드를 생성하는 방법을 보여줍니다.
<?php class MyDB extends SQLite3 { function __construct() { $this->open('test.db'); } } $db = new MyDB(); if(!$db){ echo $db->lastErrorMsg(); } else { echo "Opened database successfully\n"; } $sql =<<<EOF INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 ); EOF; $ret = $db->exec($sql); if(!$ret){ echo $db->lastErrorMsg(); } else { echo "Records created successfully\n"; } $db->close(); ?>
위 프로그램이 실행되면 COMPANY 테이블에 지정된 레코드가 생성되고 다음 두 줄이 표시됩니다.
Opened database successfully Records created successfully
SELECT 작업
다음 PHP 프로그램은 앞서 생성한 COMPANY 테이블에서 레코드를 가져와 표시하는 방법을 보여줍니다.
<?php class MyDB extends SQLite3 { function __construct() { $this->open('test.db'); } } $db = new MyDB(); if(!$db){ echo $db->lastErrorMsg(); } else { echo "Opened database successfully\n"; } $sql =<<<EOF SELECT * from COMPANY; EOF; $ret = $db->query($sql); while($row = $ret->fetchArray(SQLITE3_ASSOC) ){ echo "ID = ". $row['ID'] . "\n"; echo "NAME = ". $row['NAME'] ."\n"; echo "ADDRESS = ". $row['ADDRESS'] ."\n"; echo "SALARY = ".$row['SALARY'] ."\n\n"; } echo "Operation done successfully\n"; $db->close(); ?>
위 프로그램을 실행하면 다음과 같은 결과가 생성됩니다. :
Opened database successfully ID = 1 NAME = Paul ADDRESS = California SALARY = 20000 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 Operation done successfully
UPDATE 작업
다음 PHP 코드는 UPDATE 문을 사용하여 레코드를 업데이트한 다음 COMPANY 테이블에서 업데이트된 레코드를 가져와 표시하는 방법을 보여줍니다.
<?php class MyDB extends SQLite3 { function __construct() { $this->open('test.db'); } } $db = new MyDB(); if(!$db){ echo $db->lastErrorMsg(); } else { echo "Opened database successfully\n"; } $sql =<<<EOF UPDATE COMPANY set SALARY = 25000.00 where ID=1; EOF; $ret = $db->exec($sql); if(!$ret){ echo $db->lastErrorMsg(); } else { echo $db->changes(), " Record updated successfully\n"; } $sql =<<<EOF SELECT * from COMPANY; EOF; $ret = $db->query($sql); while($row = $ret->fetchArray(SQLITE3_ASSOC) ){ echo "ID = ". $row['ID'] . "\n"; echo "NAME = ". $row['NAME'] ."\n"; echo "ADDRESS = ". $row['ADDRESS'] ."\n"; echo "SALARY = ".$row['SALARY'] ."\n\n"; } echo "Operation done successfully\n"; $db->close(); ?>
위의 프로그램 실행은 다음과 같은 결과를 생성합니다.
Opened database successfully 1 Record updated successfully ID = 1 NAME = Paul ADDRESS = California SALARY = 25000 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 Operation done successfully
DELETE 작업
다음 PHP 코드는 DELETE 문을 사용하여 레코드를 삭제한 다음 나머지 레코드를 가져오고 표시하는 방법을 보여줍니다. COMPANY 테이블:
<?php class MyDB extends SQLite3 { function __construct() { $this->open('test.db'); } } $db = new MyDB(); if(!$db){ echo $db->lastErrorMsg(); } else { echo "Opened database successfully\n"; } $sql =<<<EOF DELETE from COMPANY where ID=2; EOF; $ret = $db->exec($sql); if(!$ret){ echo $db->lastErrorMsg(); } else { echo $db->changes(), " Record deleted successfully\n"; } $sql =<<<EOF SELECT * from COMPANY; EOF; $ret = $db->query($sql); while($row = $ret->fetchArray(SQLITE3_ASSOC) ){ echo "ID = ". $row['ID'] . "\n"; echo "NAME = ". $row['NAME'] ."\n"; echo "ADDRESS = ". $row['ADDRESS'] ."\n"; echo "SALARY = ".$row['SALARY'] ."\n\n"; } echo "Operation done successfully\n"; $db->close(); ?>
위 프로그램이 실행되면 다음과 같은 결과가 생성됩니다.
Opened database successfully 1 Record deleted successfully ID = 1 NAME = Paul ADDRESS = California SALARY = 25000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 Operation done successfully