さくらのレンタルサーバーの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のデータを表示させるテストまで行いました。以上。

おしまい

タグ:

記事をシェアする

  • facebookでシェアする
  • twitter(X)でシェアする
  • LINEでシェアする
  • はてなブックマークでシェアする
  • Pocketでシェアする
  • Pinterestでシェアする

トラックバック & ピンバック

この記事へのトラックバックURI
https://weblog.walk-life.me/sakura_sqlite_php/trackback/

コメント

コメントは下記からどうぞ

ページの先頭へ