SQLite-PHP
이 장에서는 PHP 프로그램에서 SQLite를 사용하는 방법을 배웁니다.
설치
SQLite3 확장은 PHP 5.3.0부터 기본적으로 활성화됩니다. 다음을 사용하여 비활성화 할 수 있습니다.--without-sqlite3 컴파일 타임에.
Windows 사용자는이 확장을 사용하기 위해 php_sqlite3.dll을 활성화해야합니다. 이 DLL은 PHP 5.3.0부터 PHP의 Windows 배포판에 포함되어 있습니다.
자세한 설치 지침은 PHP 튜토리얼과 공식 웹 사이트를 참조하십시오.
PHP 인터페이스 API
다음은 PHP 프로그램에서 SQLite 데이터베이스로 작업하기위한 요구 사항을 충족 할 수있는 중요한 PHP 루틴입니다. 좀 더 정교한 응용 프로그램을 찾고 있다면 PHP 공식 문서를 살펴볼 수 있습니다.
Sr. 아니. | API 및 설명 |
---|---|
1 | public void SQLite3::open ( filename, flags, encryption_key ) SQLite 3 데이터베이스를 엽니 다. 빌드에 암호화가 포함 된 경우 키 사용을 시도합니다. 경우 파일 이름은 로 주어진다':memory:', SQLite3 :: open ()은 세션 기간 동안 만 지속되는 RAM에 메모리 내 데이터베이스를 생성합니다. 파일 이름이 실제 장치 파일 이름이면 SQLite3 :: open ()은 해당 값을 사용하여 데이터베이스 파일을 열려고합니다. 해당 이름의 파일이 없으면 해당 이름의 새 데이터베이스 파일이 생성됩니다. SQLite 데이터베이스를 여는 방법을 결정하는 데 사용되는 선택적 플래그입니다. 기본적으로 open은 SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE. |
2 | public bool SQLite3::exec ( string $query ) 이 루틴은 둘 이상의 SQL 명령으로 구성 될 수있는 sql 인수가 제공하는 SQL 명령을 실행하는 빠르고 쉬운 방법을 제공합니다. 이 루틴은 주어진 데이터베이스에 대해 결과없는 쿼리를 실행하는 데 사용됩니다. |
삼 | public SQLite3Result SQLite3::query ( string $query ) 이 루틴은 SQL 쿼리를 실행하여 SQLite3Result 쿼리가 결과를 반환하는 경우 개체입니다. |
4 | public int SQLite3::lastErrorCode ( void ) 이 루틴은 가장 최근에 실패한 SQLite 요청의 숫자 결과 코드를 반환합니다. |
5 | public string SQLite3::lastErrorMsg ( void ) 이 루틴은 가장 최근에 실패한 SQLite 요청을 설명하는 영어 텍스트를 반환합니다. |
6 | public int SQLite3::changes ( void ) 이 루틴은 최신 SQL 문에 의해 업데이트, 삽입 또는 삭제 된 데이터베이스 행 수를 반환합니다. |
7 | public bool SQLite3::close ( void ) 이 루틴은 SQLite3 :: open ()에 대한 호출로 이전에 열린 데이터베이스 연결을 닫습니다. |
8 | public string 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
테이블 생성
다음 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();
?>
위의 프로그램이 실행되면 COMPANY 테이블이 생성됩니다. test.db 다음 메시지가 표시됩니다.
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
업데이트 작업
다음 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
작업 삭제
다음 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