職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

PHPからSQliteに接続するには

2017年08月15日 | sqlite
PHPからSQliteに接続するには


【開発環境】
xampp 1.8.3
PHP 5.5.9
SQLite バージョン 3.7.7.1
Eclipse 4.4

■PHPから簡易データベース「SQlite」を利用する方法が書いて無かったでここに記す
サイト→DBonlineより
1)SQLiteのダウンロード→http://www.sqlite.org/
2)ファイルの解凍先→C;¥xampp¥sqlite3(自分の好きな所を選ぶ)
3)SQLiteコマンドラインツールのテスト

【コマンドプロンプト】
C:\Users\hiromi>cd C:\xampp\sqlite3
・データベース作成
C:\xampp\sqlite3>sqlite3 sample.sqlite3
SQLite version 3.19.3 2017-06-08 14:26:16
Enter ".help" for usage hints.
sqlite>
・デーブル作成
sqlite> create table personal(id, name);
sqlite>
*データベースとデーブルを作らないとフォルダーが作られない
C:\xampp\sqlite3フォルダーにデータベース「sample1.sqlite3」が現れたら、OK
もし、出来なかったら、C:\xampp\php\extフォルダに「sqlite3.dll」あるかないか確認する。もし、無かったら、sqlite3.dllのダウンロードを行う

4)「php.ini」ファイルの設定
・PHPからSQLiteを利用する場合、php.iniでの設定が必要になる
1);extension=php_sqlite3.dllと書かれた箇所を検索して、先頭にセミコロン(;)を外す
2)php_sqlite3.dllの前に、次の文を記入する
extension=php_pdo_sqlite.dll

php.iniを書き換えたら一度Apacheを再起動しておきます。そしてphpinfo()を出力するサンプルページを実行してみます

上記のようにSQLite3に関する表示が出ていればO.K.です

【SQLコマンド】
参照→SQLiteコマンドの使い方

【コマンドラインからSQLを起動するには】
参照サイト→SQLite入門

・事前にデータベースとテーブルを作って置く
Microsoft Windows [Version 10.0.10586]
(c) 2015 Microsoft Corporation. All rights reserved.
C:\Users\hiromi>cd C:\xampp\sqlite3
C:\xampp\sqlite3>sqlite3 sample.sqlite3
SQLite version 3.19.3 2017-06-08 14:26:16
Enter ".help" for usage hints.
sqlite>

・現在接続しているデータベース名とそのデータベースが保存されているファイル名を確認
sqlite> .databases
main: C:\xampp\sqlite3\sample.sqlite3
sqlite>

・テーブル表示
sqlite> .tables
personal personal2 testtable
sqlite>

・テーブルスキーマ(構造)の確認
sqlite> .mode line
sqlite> select * from sqlite_master;
type = table
name = testtable
tbl_name = testtable
rootpage = 2
sql = CREATE TABLE testtable(id, name)

type = table
name = personal
tbl_name = personal
rootpage = 3
sql = CREATE TABLE personal(id, name)

type = table
name = personal2
tbl_name = personal2
rootpage = 4
sql = CREATE TABLE personal2(id integer, name text)
sqlite>


・データ表示(SQL文)
sqlite> select * from personal;
1|佐藤
2|高橋
3|長谷川
4|遠藤
sqlite>

・データ入力(SQL文)
sqlite> insert into personal values(5,'小林');
sqlite> select * from personal;
1|佐藤
2|高橋
3|長谷川
4|遠藤
5|小林
sqlite>

・テーブル削除
sqlite>DROP TABLE テーブル名;

・DBを削除
単にファイル削除するだけ

・コマンドラインツールを終了
sqlite> .exit
C:\xampp\sqlite3>

[様々な制約]
・PRIMARY KEY制約
sqlite> create table user(id int primary key, name text);
sqlite>
sqlite> insert into user values(1,'yamada');
sqlite> insert into user values(2,'Endo');
sqlite> insert into user values(3,'Hayashi');
sqlite> insert into user values(1,'Kudo');
Error: UNIQUE constraint failed: user.id

・INTEGER PRIMARY KEY制約
sqlite> create table address(id integer primary key, name text);
sqlite> insert into address(name) values('安藤');
sqlite> insert into address(name) values('本田');
sqlite> insert into address(name) values('山下');
sqlite> insert into address values(10,'上田');
sqlite> insert into address values(11,'神谷');
sqlite>
sqlite> .mode column
sqlite> .header on
sqlite> select * from address;
id name
---------- ----------
1 安藤
2 本田
3 山下
10 上田
11 神谷

sqlite>

・一度使われた値の再割り当て
sqlite> delete from address where id=11;
sqlite> select * from address;
id name
---------- ----------
1 安藤
2 本田
3 山下
10 上田
sqlite> insert into address(name) values('谷');
sqlite> select * from address;
id name
---------- ----------
1 安藤
2 本田
3 山下
10 上田
11 谷
sqlite>

・NOT NULL制約
カラムに格納する値としてNULLを禁止したい場合、カラムにNOT NULL制約を設定
sqlite>create table user2(name text not null, address text);
sqlite> insert into user2 values(null,'Osaka');
Error: NOT NULL constraint failed: user2.name
sqlite>

・UNIQUE制約
データの値の重複禁止
sqlite> create table user3(id integer unique, name text);
sqlite> insert into user3 values(1,'山田');
sqlite> insert into user3 values(2,'森');
sqlite> insert into user3 values(3,'大田');
sqlite> insert into user3 values(3,'桑田');
Error: UNIQUE constraint failed: user3.id
sqlite> insert into user3 values(null,'桑田');
sqlite>

・DEFAULT制約
データを省略した時、NULLでは無く、DEFAULTで設定した値になる。
sqlite> create table product(id integer, name text default 'no name',
...> price integer default 0);
sqlite> insert into product values(1,'pc',10000);
sqlite> insert into product values(2,'printer',3000);
sqlite> insert into product(id,price) values(3,5000);
sqlite>
sqlite> select * from product;
id name price
---------- ---------- ----------
1 pc 10000
2 printer 3000
3 no name 5000
sqlite>
上の様に表示されない時は、下記のように出力モードを設定をする
sqlite> .mode column
sqlite> .header on

・CHECK制約
カラムに格納する値に条件に一致しているかどうかの判定を行いたい場合
sqlite> create table user4(id integer, name text, old integer check(old > 0));
sqlite> insert into user4 values(1,'Honda',21);
sqlite> insert into user4 values(2,'Yamada',18);
sqlite> insert into user4 values(3,'Nishi',-8);
Error: CHECK constraint failed: user4
sqlite>

■ビュー機能
・ビューからデータを取得することはできますが、ビューに対してデータの追加や削除、データの更新といった処理を行うことはできません。
1)ビューの元となるテーブルを作る
sqlite> create table user5(id integer, name text, address text, old integer);
sqlite> select * from user5;
id name address old
---------- ---------- ---------- ----------
1 Honda Tokyo 23
2 Tani Tokyo 19
3 Furuta Osaka 38
4 Suzuki Tokyo 24
5 Yamada Fukuoka 18
sqlite>
2)ビューを作成
sqlite> create view tokyouser as select id, name from user5 where address = 'Tokyo';
表示
sqlite> select * from tokyouser;
id name
---------- ----------
1 Honda
2 Tani
4 Suzuki
sqlite>
3)ビュー一覧表示
sqlite> .table
address product tokyouser user2 user4
personal testtable user user3 user5
4)ビュー削除
DROP VIEW ビュー名
■その他
トリガー、テーブルの結合、インデックスの作成については→SQLite入門

【PHPを使ってSQLiteのdbに接続するには】
SQLite3はsqlite_open()が使えない為、$db = new PDO( $dsn, '', '' )を使う事。
もし、php.iniで
php.iniの「extension=○○○○」で下記のようなヤツらを追加する。
php_pdo.dll
php_pdo_sqlite.dll
php_sqlite.dll
を追加してもphp5.5ではエラーになる。これらはSQlit2用でSQLite3用では無い

※SQLite3()関数を使ったサンプル「sqlitetest1.php」
<html>
<head><title>PHP TEST</title></head>
<body>

<?php
$db = new SQLite3('C:\xampp\sqlite3\sample.sqlite3');

// 取得(SELECT)
$result = $db->query('SELECT * FROM user');
while ($row = $result->fetchArray()) {
echo $row[0] . "\n";
echo $row[1] . "\n";
}

?>
</body>
</html>
表示


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« PDOを利用してSQLiteへ接続 | トップ | PHPでPHPMailerを使うには »
最新の画像もっと見る

コメントを投稿

sqlite」カテゴリの最新記事