PHPとSQLiteを使って画像を投稿しデータベースに登録するシンプルな例
前回投稿した PHPを使って画像をアップロードするシンプルな例 にSQLiteを加え、画像名、画像、投稿日時がデータベースにインサートされるものをリポジトリにアップしてあります。
特に何もしなくてもPHPが動く環境であれば動作すると思います。
動作環境
- PHP 8.0.3
- SQLite 3.28.0
ファイル構成など
- PHPを使って画像をアップロード
- 投稿可能な拡張子はjpgとpng
- 1MB以下の画像に制限
- 投稿画像の最大幅を指定可能
sqlite_connect.php
index.php
post.php
compleat.php
images
assets
┣ css
┃ ┗ style.css
┗ js
┗ script.js
imagesディレクトリにアップロードした画像が保存されます
index.phpにアクセスするとimages.dbファイルが生成される
フレームワークを使わずに最低限のファイル数、最低限のコードで
以下要点だけをおおまかに
画像の投稿部分に関しては前回の記事を参照してください
PHPを使って画像をアップロードするシンプルな例
SQLiteについて
意外と使われていないのかなと思うのがSQLiteですが、簡単なものを作る時にはとても便利なデータベースです。
images.dbというファイルが生成され、そのファイル自体をコピーすることでバックアップは簡単にとることができます。
基本的にはPHPが動く環境であればSQLiteは使えるようになっていますが、phpinfo()でsqlite3とpdo_sqliteなどの項目を確認しておくといいでしょう。
SQLiteは大規模なプロジェクトには向いていません。
メリットとデメリットなどは各自確認してから使用しましょう。
sqlite_connect.php
タイムゾーンの設定とSQLiteの接続の設定
index.phpとpost.php内で読み込んでいます。
初めて接続されればimages.dbファイルがルートに生成され、同時にimagesテーブルも生成されます。
2回目以降の接続であれば既にimagesテーブルがあるので8〜13行目は無視されます。
imagesテーブル
id | image_title | image_name | created_at | |
---|---|---|---|---|
内容 | ID オートインクリメントで一意 | 画像のタイトル | 画像名 | 投稿日時 |
型 | INT | TEXT | TEXT | INT |
NULL | 許可しない | 許可しない | 許可しない | 許可しない |
index.php
sqlite_connect.phpを読み込みデータベースに接続
SELECT文を書いてimagesテーブルの内容を問い合わせ、変数$htmlに内容を入れる。
html側に$htmlを出力
post.php
sqlite_connect.phpを読み込みデータベースに接続
$_POST['image_title']はindex.phpから送信された画像タイトル。
$image_nameは前回の投稿を参照
PHPを使って画像をアップロードするシンプルな例
imagesテーブルにインサート。
画像が投稿されているかはindex.phpで確認。
まとめ
SQLiteについては日本語の情報が少ない、MYSQLなどとは違いシンプルな仕様なので痒いところに手が届かないという感じですが、シンプルなものを作るには非常に便利です。
まずは一度使ってみることをお勧めします。
シンプルなBlogなどであればWordpressを使うよりSQLiteを使うほうがいい場合も。
Discussion