EDB
[ class tree: EDB ] [ index: EDB ] [ all elements ]

Sample code of sqlite3 abstraction layer

  1. <?php
  2. /*
  3.  * EDB::SQLITE3 tests
  4.  */
  5.  
  6. require_once './test-common.php';
  7. require_once 'edb.php';
  8.  
  9. set_error_handler('myException::myErrorHandler');
  10.  
  11. $scheme = <<<EOF
  12. CREATE TABLE edb_test (
  13.     num   integer NOT NULL PRIMARY KEY,
  14.     cid   char(30) UNIQUE NOT NULL,
  15.     cname char(30) NOT NULL,
  16.     bdata blob
  17. );
  18. EOF;
  19.  
  20. if ( file_exists ('test.db') )
  21.     unlink ('test.db');
  22.  
  23. try {
  24.  
  25.     $i=0;
  26.     $db = new EDB ('sqlite3://test.db', 0644);
  27.  
  28.     ##############################################################################
  29.     # Create table test
  30.     ##############################################################################
  31.     if ( $scheme ) {
  32.         echo "\n\n*** Create table\n";
  33.         $r = $db->query ($scheme);
  34.         printf ("    => Affected Rows is %d\n", $r);
  35.     }
  36.  
  37.  
  38.     ##############################################################################
  39.     # Insert test
  40.     ##############################################################################
  41.     echo "\n\n*** Insert test\n";
  42.     $r = 0;
  43.  
  44.     # get blob data
  45.     $imgs = file_get_contents ('./test.png');
  46.  
  47.     # insert bind query test
  48.     $sql = 'INSERT INTO edb_test (cid, cname, bdata) VALUES (?, ?, ?)';
  49.  
  50.     $img = new stdClass;
  51.     $img->data = $imgs;
  52.     $img->len = filesize ('./test.png');
  53.     for ( $i=0; $i<2; $i++ ) {
  54.         $n = $db->query ($sql, 'ssb', 'cid_' . $i, $db->escape ('c\'name_' . $i), $img);
  55.         $db->free_result ();
  56.         $r += $n;
  57.     }
  58.  
  59.     # insert static query test
  60.     for ( $i=2; $i<4; $i++ ) {
  61.         $sql = sprintf (
  62.             'INSERT INTO edb_test (cid, cname, bdata) VALUES (\'%s\', \'%s\', \'%s\')',
  63.             'cid_' . $i,
  64.             $db->escape ('c\'name_' . $i),
  65.             $db->escape ($imgs)
  66.         );
  67.         # It's ok too.
  68.         #$sql = sprintf (
  69.         #    'INSERT INTO edb_test (cid, cname, bdata) VALUES (\'%s\', \'%s\', X\'%s\')',
  70.         #    'cid_' . $i,
  71.         #    $db->escape ('c\'name_' . $i),
  72.         #    bin2hex ($imgs)
  73.         #);
  74.         $n = $db->query ($sql);
  75.         $db->free_result ();
  76.         $r += $n;
  77.     }
  78.  
  79.     printf ("    => Affected Rows is %d\n", $r);
  80.  
  81.     ##############################################################################
  82.     # Select test
  83.     ##############################################################################
  84.     echo "\n\n*** Select test\n";
  85.     $r = $db->query ('SELECT * FROM edb_test WHERE num > ?', 'i', 0); 
  86.     printf ("    => Selected Rows is %d (Bind query)\n", $r);
  87.  
  88.     printf ('    => Current columns are');
  89.     $fno = $db->num_fields ();
  90.     for ( $i=0; $i<$fno; $i++ )
  91.         printf (' %s (%s)', $db->field_name ($i), $db->field_type ($i));
  92.  
  93.     printf ("\n    => Move data cousor to 2\n");
  94.     $db->seek (2);
  95.     $row = $db->fetch_all ();
  96.     printf ("    => Fetched data is %d lows\n\n", count ($row));
  97.  
  98.     $db->free_result ();
  99.     unset ($row);
  100.  
  101.     $r = $db->query ('SELECT * FROM edb_test WHERE num > 0'); 
  102.     printf ("    => Selected Rows is %d\n", $r);
  103.  
  104.     for ( $i=0; $i<$r; $i++ ) {
  105.         $row[] = $db->fetch ();
  106.     }
  107.     printf ("    => Fetched data is %d lows\n\n", count ($row));
  108.  
  109.     printf ("    => Original image's md5 is %s\n", md5_file ('test.png'));
  110.     $fp = fopen ('test_new.png', 'wb');
  111.     if ( is_resource ($fp) ) {
  112.         fwrite ($fp, $row[0]->bdata);
  113.         fclose ($fp);
  114.     }
  115.  
  116.     if ( file_exists ('test_new.png') ) {
  117.         printf ("    =>  Selected data's md5 is %s\n", md5_file ('test_new.png'));
  118.         printf ("    =>  Selected data's size is %d\n", filesize ('test_new.png'));
  119.         unlink ('test_new.png');
  120.     }
  121.  
  122.     $db->free_result ();
  123.     unset ($row);
  124.  
  125.  
  126.     ##############################################################################
  127.     # Update test
  128.     ##############################################################################
  129.     echo "\n\n*** Update date\n";
  130.     $r = $db->query (
  131.         "UPDATE edb_test SET cname = ? WHERE cid = ?",
  132.         'ss',
  133.         'cname_22',
  134.         'cid_2');
  135.     printf ("    => Affected Rows is %d\n", $r);
  136.     $db->free_result ();
  137.  
  138.     $r = $db->query ('SELECT * FROM edb_test WHERE cid = ?', 's', 'cid_2'); 
  139.     $row = $db->fetch ();
  140.  
  141.     if ( $row->cname == 'cname_22' )
  142.         printf ("    => Changed data is %s\n", $row->cname);
  143.     else
  144.         printf ("    => Don't changed data is %s\n", $row->cname);
  145.  
  146.     $db->free_result ();
  147.     unset ($row);
  148.  
  149.  
  150.     ##############################################################################
  151.     # Delete test
  152.     ##############################################################################
  153.     echo "\n\n*** Delete test\n";
  154.     $r = $db->query ("DELETE FROM edb_test WHERE cid = ?", 's', 'cid_2');
  155.     $db->free_result ();
  156.     printf ("    => Affected Rows is %d\n", $r);
  157.  
  158.     $r = $db->query ('SELECT * FROM edb_test WHERE num > 0'); 
  159.     printf ("    => Selected Rows is %d\n", $r);
  160.  
  161.     $row = $db->fetch_all ();
  162.     printf ("    => Fetched data is %d lows\n\n", count ($row));
  163.  
  164.     $db->free_result ();
  165.     unset ($row);
  166.  
  167. } catch ( myException $e ) {
  168.     fprintf (STDERR, "%s\n", $e->Message ());
  169.     #print_r ($e);
  170.     #print_r ($e->Trace ());
  171.     #echo $e->TraceAsString () . "\n";
  172.     print_r ($e->TraceAsArray ()) . "\n";
  173.     $e->finalize ();
  174. }
  175.  
  176. if ( file_exists ('test.db') )
  177.     unlink ('test.db');
  178.  
  179. /*
  180.  * Local variables:
  181.  * tab-width: 4
  182.  * c-basic-offset: 4
  183.  * End:
  184.  * vim: set filetype=php noet sw=4 ts=4 fdm=marker:
  185.  * vim600: noet sw=4 ts=4 fdm=marker
  186.  * vim<600: noet sw=4 ts=4
  187.  */
  188. ?>

Documentation generated on Fri, 30 Aug 2024 06:10:08 +0900 by phpDocumentor 1.4.4