卒研でデータベースを使いたい人もいるようだけど、 MySQLとかまで完璧なのが必要なければ、SQLite を使ったほうが楽。 ただし、データ型は実質すべてtext型になるけど、簡単なアプリベースなら 支障はないはず。
<?php
// データ保存用の sqlite-data はあらかじめ作っておく。
// sqlite-data の書き込み許可
// (手抜) $ chmod 777 sqlite-data
// (厳密) # chgrp sqlite-data
// # chmod 774 sqlite-data
// sqlite-data/.htaccess には"Require all denied"を書いて
// ディレクトリ内をWeb的にアクセス禁止にする。
// サーバのPHPを使うと、エラーが見つからず苦労するかも
// その時は、.htaccess ファイルに、以下の設定を記載しておく
// "php_flag display_errors On"
// 説明しやすいように実行だけ関数をつくる
function exec_command( $db , $cmd ) {
if ( ($db->exec( $cmd )) === FALSE ) {
print $db->lastErrorMsg() ;
}
}
// データベースを作って初期データを登録
function table_initialize( $db ) {
exec_command( $db ,
"create table Person(name text,phone text) ;" ) ;
exec_command( $db ,
"insert into Person (name,phone) values('t-saitoh','272925');" ) ;
exec_command( $db ,
"insert into Person (name,phone) values('tomoko' ,'123456');" ) ;
exec_command( $db ,
"insert into Person (name,phone) values('mitsuki' ,'234567');" ) ;
}
// データベースを作る
if ( !file_exists( "./sqlite-data/sample.db" ) ) {
// なにも無い状態
$db = new SQLite3( "./sqlite-data/sample.db" ) ;
table_initialize( $db ) ;
} else {
// すでに作られている場合
$db = new SQLite3( "./sqlite-data/sample.db" ) ;
}
?>
<html>
<head>
</head>
<body>
<pre>
<?php
// 登録されているデータを全部表示
if ( ($query = $db->query( "select * from Person" )) !== FALSE ) {
while( $res = $query->fetchArray( SQLITE3_NUM ) ) {
printf( "| %-10s | %-10s |\n" , $res[0] , $res[1] ) ;
}
}
?>
</pre>
</body>
</html>