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

Sample code of postgresql abstraction layer

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

Documentation generated on Tue, 14 May 2019 01:59:45 +0900 by phpDocumentor 1.4.4