さくらのレンタルサーバーのPHPとSQLiteを使ってみた
2023/10/19 (木) - 00:00 PHP&CMS
SQLiteは非常に簡易的なデータベースです。さくらインターネットのレンタルサーバーでは標準でPHPとSQLiteが使え、一番安いライトプラン(月額税込 128円〜)でも使えます。今回たまたまSQLiteを扱う機会があったので、簡単なメモをしておきます(MySQLとかはよく使うけど、SQLiteを使う機会はあまりなかったので…)。SQLiteはどのプランでも使えますが、SSHからコマンドラインでSQLiteを扱うためにはさくらインターネットのレンタルサーバースタンダードプラン以上で契約する必要があります。
以下の環境です。
- さくらのレンタルサーバースタンダードプラン
- PHP 8.2.x
- SQLite 3.7.x
データベースを作成
データベースを扱いたいディレクトリに移動した後、データベースを作成します。sqlite3 [データベース名]
と記述しコマンドを打ちます。テストとしてtest_dbとしています。
$ cd [任意のディレクトリ]
$ sqlite3 test_db.sqlite3
上記を行うとSQLiteを使用できるモードになります。
出力モードを変更
画面を見やすくするように、テーブルのカラム毎に行を分けて出力するモードに設定します。
sqlite> .mode line
テーブルを作成
tbl_testというテストのテーブルを作成します。今回は以下のような構造と仮定します。
カラム名 | データ型 | 備考 |
---|---|---|
id | integer | 自動連番 |
name | text | |
age | integer |
sqlite> create table tbl_test(id integer primary key autoincrement, name text, age integer);
データの追加
データの追加する場合はinsert文で insert into [テーブル名] ([カラム1],[カラム2],...) values ('カラム1の値','カラム2の値',...);
とコマンドを打ちます。
sqlite> insert into tbl_test (name,age) values ('Su-METAL','25');
sqlite> insert into tbl_test (name,age) values ('Moa-METAL','24');
sqlite> select * from tbl_test;
id = 1
name = Su-METAL
age = 25
id = 2
name = Moa-METAL
age = 24
select * from [テーブル名];
でテーブルの内容を参照できます。
データの更新
id=1の行のageの値を更新します。
sqlite> update tbl_test set age = '26' where id = 1;
sqlite> select * from tbl_test;
id = 1
name = Su-METAL
age = 26
ageの値が25から26になりました。
条件を指定してデータを取得する
id=1の行のデータを取得します。
sqlite> select * from tbl_test where id = 1;
id = 1
name = Su-METAL
age = 26
条件を指定してデータを削除する
id=1の行を削除します。
sqlite> delete from tbl_test where id = 1;
sqlite> select * from tbl_test;
id = 2
name = Moa-METAL
age = 24
id=1が消えました。
sqliteを終了させる
以下のコマンドで終了できます。
sqlite> .exit
PHPでsqliteの情報を表示する
最後にPHPからSQLiteを使ってみます。PHPでは専用クラスの new SQLite3('作成したsqlite名');
でSQLiteに接続できます。同様に select文
でデータの抽出もできます。以下はSQLiteのデータを簡単に表示した例です。
<ul>
<?php
$db = new SQLite3('test_db.sqlite3');
$sql = 'select * from tbl_test';
$get = $db->query($sql);
while($result = $get->fetchArray()) {
echo '<li>番号→'.$result['id'].' 名前→'.$result['name'].' 年齢→'.$result['age'].'</li>';
}
$db->close();
?>
</ul>
結果
<ul>
<li>番号→2 名前→Moa-METAL 年齢→24</li>
<li>番号→3 名前→Ayase 年齢→29</li>
<li>番号→4 名前→Ikura 年齢→23</li>
</ul>
GETパラメータで抽出条件を変えてデータを取得する
GETパラメータによって出力する条件を変える場合。あくまで例なので結果が見つからなかった場合の対策や、XSS・SQLインジェクションの対策は省いています。
<ul>
<?php
$id = isset($_GET['id']) ? $_GET['id'] : null;
if(!$id){
exit;
}
$db = new SQLite3('test_db.sqlite3');
$sql = 'select * from tbl_test where id='.$id;
$get = $db->query($sql);
while($result = $get->fetchArray()) {
echo '<li>番号→'.$result['id'].' 名前→'.$result['name'].' 年齢→'.$result['age'].'</li>';
}
$db->close();
?>
</ul>
example.php?id=4にアクセスした場合の結果
<ul>
<li>番号→4 名前→Ikura 年齢→23</li>
</ul>
PHPでSQLiteのデータを表示させるテストまで行いました。以上。
おしまい♥
トラックバック & ピンバック
- この記事へのトラックバックURI:
- https://weblog.walk-life.me/sakura_sqlite_php/trackback/