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

Sample code of sqlite2 abstraction layer

  1. <?php
  2. /*
  3.  * EDB::SQLITE2 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 ('sqlite2://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.         $n $db->query ($sql);
  68.         $db->free_result ();
  69.         $r += $n;
  70.     }
  71.  
  72.     printf ("    => Affected Rows is %d\n"$r);
  73.  
  74.     ##############################################################################
  75.     # Select test
  76.     ##############################################################################
  77.     echo "\n\n*** Select test\n";
  78.     $r $db->query ('SELECT * FROM edb_test WHERE num > ?''i'0)
  79.     printf ("    => Selected Rows is %d (Bind query)\n"$r);
  80.  
  81.     printf ('    => Current columns are');
  82.     $fno $db->num_fields ();
  83.     for $i=0$i<$fno$i++ )
  84.         printf (' %s (%s)'$db->field_name ($i)$db->field_type ($i'edb_test'));
  85.  
  86.     printf ("\n    => Move data cousor to 2\n");
  87.     $db->seek (2);
  88.     $row $db->fetch_all ();
  89.     printf ("    => Fetched data is %d lows\n\n"count ($row));
  90.  
  91.     $db->free_result ();
  92.     unset ($row);
  93.  
  94.     $r $db->query ('SELECT * FROM edb_test WHERE num > 0')
  95.     printf ("    => Selected Rows is %d\n"$r);
  96.  
  97.     for $i=0$i<$r$i++ {
  98.         $row[$db->fetch ();
  99.     }
  100.     printf ("    => Fetched data is %d lows\n\n"count ($row));
  101.  
  102.     printf ("    => Original image's md5 is %s\n"md5_file ('test.png'));
  103.     $fp fopen ('test_new.png''wb');
  104.     if is_resource ($fp) ) {
  105.         fwrite ($fp$row[0]->bdata);
  106.         fclose ($fp);
  107.     }
  108.  
  109.     if file_exists ('test_new.png') ) {
  110.         printf ("    =>  Selected data's md5 is %s\n"md5_file ('test_new.png'));
  111.         printf ("    =>  Selected data's size is %d\n"filesize ('test_new.png'));
  112.         unlink ('test_new.png');
  113.     }
  114.  
  115.     $db->free_result ();
  116.     unset ($row);
  117.  
  118.  
  119.     ##############################################################################
  120.     # Update test
  121.     ##############################################################################
  122.     echo "\n\n*** Update date\n";
  123.     $r $db->query (
  124.         "UPDATE edb_test SET cname = ? WHERE cid = ?",
  125.         'ss',
  126.         'cname_22',
  127.         'cid_2');
  128.     printf ("    => Affected Rows is %d\n"$r);
  129.     $db->free_result ();
  130.  
  131.     $r $db->query ('SELECT * FROM edb_test WHERE cid = ?''s''cid_2')
  132.     $row $db->fetch ();
  133.  
  134.     if $row->cname == 'cname_22' )
  135.         printf ("    => Changed data is %s\n"$row->cname);
  136.     else
  137.         printf ("    => Don't changed data is %s\n"$row->cname);
  138.  
  139.     $db->free_result ();
  140.     unset ($row);
  141.  
  142.  
  143.     ##############################################################################
  144.     # Delete test
  145.     ##############################################################################
  146.     echo "\n\n*** Delete test\n";
  147.     $r $db->query ("DELETE FROM edb_test WHERE cid = ?"'s''cid_2');
  148.     $db->free_result ();
  149.     printf ("    => Affected Rows is %d\n"$r);
  150.  
  151.     $r $db->query ('SELECT * FROM edb_test WHERE num > 0')
  152.     printf ("    => Selected Rows is %d\n"$r);
  153.  
  154.     $row $db->fetch_all ();
  155.     printf ("    => Fetched data is %d lows\n\n"count ($row));
  156.  
  157.     $db->free_result ();
  158.     unset ($row);
  159.  
  160. catch myException $e {
  161.     fprintf (STDERR"%s\n"$e->Message ());
  162.     #print_r ($e);
  163.     #print_r ($e->Trace ());
  164.     #echo $e->TraceAsString () . "\n";
  165.     print_r ($e->TraceAsArray ()) "\n";
  166.     $e->finalize ();
  167. }
  168.  
  169. if file_exists ('test.db') )
  170.     unlink ('test.db');
  171.  
  172. /*
  173.  * Local variables:
  174.  * tab-width: 4
  175.  * c-basic-offset: 4
  176.  * End:
  177.  * vim: set filetype=php noet sw=4 ts=4 fdm=marker:
  178.  * vim600: noet sw=4 ts=4 fdm=marker
  179.  * vim<600: noet sw=4 ts=4
  180.  */
  181. ?>

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