수색…


데이터베이스 쿼리

<?php
//Create a new SQLite3 object from a database file on the server.
$database = new SQLite3('mysqlitedb.db');

//Query the database with SQL
$results = $database->query('SELECT bar FROM foo');

//Iterate through all of the results, var_dumping them onto the page
while ($row = $results->fetchArray()) {
    var_dump($row);
}
?>

http://www.riptinar.com/topic/184참조하십시오.

하나의 결과 만 검색 중

LIMIT SQL 문을 사용하는 것 외에도 SQLite3 함수 querySingle 을 사용하여 단일 행 또는 첫 번째 열을 검색 할 수 있습니다.

<?php
$database = new SQLite3('mysqlitedb.db');

//Without the optional second parameter set to true, this query would return just
//the first column of the first row of results and be of the same type as columnName
$database->querySingle('SELECT column1Name FROM table WHERE column2Name=1');

//With the optional entire_row parameter, this query would return an array of the
//entire first row of query results.
$database->querySingle('SELECT column1Name, column2Name FROM user WHERE column3Name=1', true);
?>

SQLite3 빠른 시작 자습서

이것은 일반적으로 사용되는 모든 SQLite 관련 API의 완전한 예입니다. 목표는 당신을 정말로 빨리 데려오고 실행시키는 것입니다. 이 튜토리얼의 실행 가능한 PHP 파일 을 얻을 수도있다.

데이터베이스 생성 / 열기

먼저 새로운 데이터베이스를 만듭니다. 파일이 존재하지 않고 읽기 / 쓰기 용으로 열 경우에만 파일을 만듭니다. 파일의 확장자는 당신에게 .sqlite 있지만, .sqlite 는 꽤 흔하고 자명합니다.

$db = new SQLite3('analytics.sqlite', SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE);

표 만들기

$db->query('CREATE TABLE IF NOT EXISTS "visits" (
    "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    "user_id" INTEGER,
    "url" VARCHAR,
    "time" DATETIME
)');

샘플 데이터 삽입.

원 자성에 대해 신경 쓰지 않아도 관련 검색어를 거래 (키워드 BEGINCOMMIT )로 래핑하는 것이 좋습니다. 이렇게하지 않으면 SQLite는 모든 쿼리를 트랜잭션에 자동으로 래핑하므로 엄청나게 속도가 느려집니다. SQLite를 처음 한다면 INSERT가그렇게 느린 지 놀랄 것입니다.

$db->exec('BEGIN');
$db->query('INSERT INTO "visits" ("user_id", "url", "time")
    VALUES (42, "/test", "2017-01-14 10:11:23")');
$db->query('INSERT INTO "visits" ("user_id", "url", "time")
    VALUES (42, "/test2", "2017-01-14 10:11:44")');
$db->exec('COMMIT');

준비된 명령문으로 잠재적으로 안전하지 않은 데이터를 삽입하십시오. 명명 된 매개 변수를 사용 하여이 작업을 수행 할 수 있습니다.

$statement = $db->prepare('INSERT INTO "visits" ("user_id", "url", "time")
    VALUES (:uid, :url, :time)');
$statement->bindValue(':uid', 1337);
$statement->bindValue(':url', '/test');
$statement->bindValue(':time', date('Y-m-d H:i:s'));
$statement->execute(); you can reuse the statement with different values

데이터를 가져 오는 중

오늘 # 42 사용자의 방문을 가져옵니다. 이번에는 번호가 매겨진 매개 변수를 사용하여 준비된 문을 다시 사용 하겠지만 간결합니다.

$statement = $db->prepare('SELECT * FROM "visits" WHERE "user_id" = ? AND "time" >= ?');
$statement->bindValue(1, 42);
$statement->bindValue(2, '2017-01-14');
$result = $statement->execute();

echo "Get the 1st row as an associative array:\n";
print_r($result->fetchArray(SQLITE3_ASSOC));
echo "\n";

echo "Get the next row as a numeric array:\n";
print_r($result->fetchArray(SQLITE3_NUM));
echo "\n";

주 : 더 이상 행이 없으면 fetchArray ()는 false 반환합니다. 이 루프는 while 사용할 수 있습니다.

메모리를 확보하십시오 - 스크립트가 실행되는 동안 자동으로 수행 되지 않습니다.

$result->finalize();

약자

하나의 행을 연관 배열로 가져 오는 것에 대한 유용한 속기가 있습니다. 두 번째 매개 변수는 선택한 모든 열을 원한다는 것을 의미합니다.

조심해,이 속기는 매개 변수 바인딩을 지원하지 않지만 대신 문자열을 이스케이프 처리 할 수 ​​있습니다. 항상 값을 SINGLE 따옴표로 묶으십시오! 큰 따옴표는 테이블과 컬럼 이름에 사용됩니다 (MySQL의 백틱과 유사).

$query = 'SELECT * FROM "visits" WHERE "url" = \'' .
    SQLite3::escapeString('/test') .
    '\' ORDER BY "id" DESC LIMIT 1';

$lastVisit = $db->querySingle($query, true);

echo "Last visit of '/test':\n";
print_r($lastVisit);
echo "\n";

하나의 값을 검색하는 또 다른 유용한 속기.

$userCount = $db->querySingle('SELECT COUNT(DISTINCT "user_id") FROM "visits"');

echo "User count: $userCount\n";
echo "\n";

청소

마지막으로 데이터베이스를 닫습니다. 이 작업은 스크립트가 끝나면 자동으로 수행됩니다.

$db->close();


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow