Data Base を作成

PHP から SQLite を呼び出してサーバー上に Data Base('meibo1.db')を作成します。
SQLite が使えるか否かは、プロバイダーが許可しているか否かの問題です。

Data Base を作成するプログラム(dbmeibo1.php)を呼び出すコードです。
<a href="http://maedakobe.rw.xsi.jp/php/dbmeibo1.php">Data Base を作成</a>
次のリンクをクリックすると dbmeibo1.php が呼び出されます。
Data Base を作成
sex=2 のレコードを抽出して表示します。
sex=2 を抽出

Data Base を作成

  1. 'meibo1.db' を作成して、5件のデータを登録するプログラム(dbmeibo1.php)です。
    <html>
    <head><title>meibo1.db の作成/印字</title></head>
    <body>
    <?php
        $flag = file_exists('meibo1.db');
        $db = new SQLite3('meibo1.db');
        if ($flag==false)
        {   //table1 テーブル作成
            $db->exec('create table table1 (id, name, sex, age)');
            //データを登録
            $db->exec("insert into table1 values('n1', '花子', 2, 20)");
            $db->exec("insert into table1 values('n2', '太郎', 1, 21)");
            $db->exec("insert into table1 values('n3', '涼子', 2, 22)");
            $db->exec("insert into table1 values('n4', '和也', 1, 22)");
            $db->exec("insert into table1 values('n5', '美里', 2, 22)");
        }
        //データを表示
        $results = $db->query('SELECT * FROM table1');
        while($row = $results->fetchArray())
        {   var_dump($row);
            print "<br>\r\n";
        }
        //接続終了
        $db->close();
    ?>
    </body>
    </html>
    
  2. 【実行画面】
    このプログラムを実行したときの画面です。
    array(8) { [0]=> string(2) "n1" ["id"]=> string(2) "n1" [1]=> string(4) "花子" ["name"]=> string(4) "花子" [2]=> int(2) ["sex"]=> int(2) [3]=> int(20) ["age"]=> int(20) } 
    array(8) { [0]=> string(2) "n2" ["id"]=> string(2) "n2" [1]=> string(4) "太郎" ["name"]=> string(4) "太郎" [2]=> int(1) ["sex"]=> int(1) [3]=> int(21) ["age"]=> int(21) } 
    array(8) { [0]=> string(2) "n3" ["id"]=> string(2) "n3" [1]=> string(4) "涼子" ["name"]=> string(4) "涼子" [2]=> int(2) ["sex"]=> int(2) [3]=> int(22) ["age"]=> int(22) } 
    array(8) { [0]=> string(2) "n4" ["id"]=> string(2) "n4" [1]=> string(4) "和也" ["name"]=> string(4) "和也" [2]=> int(1) ["sex"]=> int(1) [3]=> int(22) ["age"]=> int(22) } 
    array(8) { [0]=> string(2) "n5" ["id"]=> string(2) "n5" [1]=> string(4) "美里" ["name"]=> string(4) "美里" [2]=> int(2) ["sex"]=> int(2) [3]=> int(22) ["age"]=> int(22) } 
    
  3. SQLite もバージョンにより多少使い方に違いがあるようで、私は SQLite3 を使っています。
    $flag = file_exists('meibo1.db'); で 'meibo1.db' が存在するか否かを調べます。
  4. $db = new SQLite3('meibo1.db'); でデータベースを作成します。
    同じコードでも、既に 'meibo1.db' が存在するときはこれを開きます。
  5. if ($flag==false) の中は 'meibo1.db' が存在しないときの処理です。
  6. $results = $db->query('SELECT * FROM table1'); で table1 のデータを取得します。
  7. fetchArray() 関数で $results から連想配列を順番に $row に格納します。
    fetchArray() は SQLite3 Class に属する関数です。
  8. var_dump($row); で取得したデータを表示します。
    var_dump() はパラメータで指定した領域の属性と値を印字する PHP の関数で、ここでは連想配列? $row を印字します。

登録と表示を分ける

  1. 'meibo1.db' を作成して、table1 に登録するプログラムです。
    この方法では、既に 'meibo1.db' が存在するとレコードが重複して登録されます。
    <html>
    <head><title>SQLite TEST</title></head>
    <body>
    <?php
        $db = new SQLite3('meibo1.db');
        $db->exec('create table table1 (id, name, sex, age)');
        $db->exec("insert into table1 values('n1', '花子', 2, 20)");
        $db->exec("insert into table1 values('n2', '太郎', 1, 21)");
        $db->exec("insert into table1 values('n3', '涼子', 2, 22)");
        $db->exec("insert into table1 values('n4', '和也', 1, 22)");
        $db->exec("insert into table1 values('n5', '美里', 2, 22)");
        $db->close();
    ?>
    </body>
    </html>
    
  2. 'meibo1.db' を開いて、table1 に登録されているデータを表示します。
    <html>
    <head><title>SQLite TEST</title></head>
    <body>
    <?php
        $db = new SQLite3('meibo1.db');
        $results = $db->query('SELECT * FROM table1');
        while($row = $results->fetchArray())
        {   var_dump($row);
            print "<br>\r\n";
        }
        $db->close();
    ?>
    </body>
    </html>
    

レコードを抽出

  1. 'meibo1.db' から id='n1' のレコードを抽出します。
    <html>
    <head><title>レコードを抽出</title></head>
    <body>
    <?php
        $db = new SQLite3('meibo1.db');
        $results = $db->query("select * from table1 where id='n1'");
        while($row = $results->fetchArray())
        {   print_r($row);
            print "<br>\r\n";
        }
        $db->close();
    ?>
    </body>
    </html>
    
  2. 【実行画面】
    $db->query("select * from table1 where id='n1'"); で id='n1' のレコードを抽出します。
    ヒットしたレコードは1件だけです。
    print_r($row); で印字しているので、var_dump($row); とは印字の形式が違います。
    Array ( [0] => n1 [id] => n1 [1] => 花子 [name] => 花子 [2] => 2 [sex] => 2 [3] => 20 [age] => 20 ) 
    
  3. 次に sex=2 のレコードを抽出します。
        $results = $db->query('select * from table1 where sex=2');
        while($row = $results->fetchArray())
        {   print_r($row);
            print "<br>\r\n";
        }
    
  4. 【実行画面】
    3件のレコードがヒットしました。
    Array ( [0] => n1 [id] => n1 [1] => 花子 [name] => 花子 [2] => 2 [sex] => 2 [3] => 20 [age] => 20 ) 
    Array ( [0] => n3 [id] => n3 [1] => 涼子 [name] => 涼子 [2] => 2 [sex] => 2 [3] => 22 [age] => 22 ) 
    Array ( [0] => n5 [id] => n5 [1] => 美里 [name] => 美里 [2] => 2 [sex] => 2 [3] => 22 [age] => 22 ) 
    
  5. 表示されるアイテムを name, sex に絞ります。
        $results = $db->query(
            'SELECT table1.name, table1.sex FROM table1 where sex=2');
        while($row = $results->fetchArray())
        {   print_r($row);
            print "<br>\r\n";
        }
    
  6. 【実行画面】
    name, sex だけが表示されています。
    Array ( [0] => 花子 [name] => 花子 [1] => 2 [sex] => 2 ) 
    Array ( [0] => 涼子 [name] => 涼子 [1] => 2 [sex] => 2 ) 
    Array ( [0] => 美里 [name] => 美里 [1] => 2 [sex] => 2 ) 
    

前田稔の超初心者のプログラム入門
PHP Program