SQLite3でデータベース

卒研でデータベースを使いたい人もいるようだけど、 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>
 

2015年12月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

アーカイブ

Google

このブログ記事について

このページは、T-Saitohが2015年4月 9日 17:47に書いたブログ記事です。

ひとつ前のブログ記事は「情報構造論ガイダンス」です。

次のブログ記事は「斉藤卒研室の課題」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。