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

Sample code of mysql abstraction layer

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

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