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

Source for file mktable.inc

Documentation is available at mktable.inc

  1. <?php
  2.  
  3. /**
  4.  * Creates the <kbd>phptest</kbd> table
  5.  *
  6.  * Tries to drop the table first, in case it already exists.
  7.  *
  8.  * <pre>
  9.  * CREATE TABLE phptest (
  10.  *   a INTEGER NULL,
  11.  *   b CHAR(40) DEFAULT 'def' NOT NULL,
  12.  *   cc VARCHAR(255) NULL,
  13.  *   d VARCHAR(20) NULL)
  14.  * </pre>
  15.  *
  16.  * Need <kbd>NOT NULL</kbd> on <kbd>b</kbd> to test
  17.  * <kbd>DB_PORTABILITY_RTRIM</kbd>.  MS SQL and Sybase trim output from
  18.  * <kbd>VARCHAR</kbd>, but not on <kbd>CHAR</kbd>.
  19.  *
  20.  * Need <kbd>DEFAULT</kbd> value on <kbd>b</kbd> because Oracle considers
  21.  * an empty string to be <kbd>NULL</kbd>.
  22.  *
  23.  * In Oracle, when using placeholders in <kbd>WHERE</kbd> clauses on
  24.  * <kbd>CHAR</kbd> columns, the column must have <kbd>RTRIM()</kbd> run on
  25.  * the column:
  26.  * <samp>
  27.  *    SELECT * FROM phptest WHERE RTRIM(b) = ?
  28.  * </samp>
  29.  *
  30.  * PHP versions 4 and 5
  31.  *
  32.  * LICENSE: This source file is subject to version 3.0 of the PHP license
  33.  * that is available through the world-wide-web at the following URI:
  34.  * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
  35.  * the PHP License and are unable to obtain it through the web, please
  36.  * send a note to license@php.net so we can mail you a copy immediately.
  37.  *
  38.  * @category   Database
  39.  * @package    DB
  40.  * @author     Daniel Convissor <danielc@php.net>
  41.  * @copyright  1997-2005 The PHP Group
  42.  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
  43.  * @version    $Id: mktable.inc,v 1.20 2007/01/05 15:12:56 danielc Exp $
  44.  * @link       http://pear.php.net/package/DB
  45.  */
  46.  
  47. /**
  48.  * Establishes the DB object and connects to the database
  49.  */
  50. require_once './connect.inc';
  51.  
  52. /**
  53.  * Get the drop_table() function
  54.  */
  55. require_once './droptable.inc';
  56.  
  57. /**
  58.  * The error handler for the drop table procedure
  59.  *
  60.  * Prints out an error message and dies.
  61.  */
  62. function debug_die($o){
  63.     die($o->toString());
  64. }
  65.  
  66.  
  67. $dbh->setErrorHandling(PEAR_ERROR_RETURN);
  68. drop_table($dbh'phptest');
  69.  
  70. //$dbh->setErrorHandling(PEAR_ERROR_TRIGGER);
  71. $dbh->setErrorHandling(PEAR_ERROR_CALLBACK'debug_die');
  72.  
  73. if ($dbh->phptype == 'odbc'{
  74.     if ($dbh->dbsyntax == 'odbc'{
  75.         $type $dbh->phptype;
  76.     else {
  77.         $type $dbh->dbsyntax;
  78.     }
  79. else {
  80.     $type $dbh->phptype;
  81. }
  82.  
  83.  
  84. switch ($type{
  85.     case 'access':
  86.         $null 'NULL';
  87.         $chrc 'VARCHAR(255)';
  88.         $chrd 'VARCHAR(20)';
  89.         $default '';
  90.         $tabletype '';
  91.         break;
  92.     case 'db2':
  93.     case 'ibase':
  94.         $null '';
  95.         $chrc 'VARCHAR(255)';
  96.         $chrd 'VARCHAR(20)';
  97.         $default "DEFAULT 'def' NOT NULL";
  98.         $tabletype '';
  99.         break;
  100.     case 'fbsql':
  101.         $null '';
  102.         $chrc 'CHAR(255)';
  103.         $chrd 'CHAR(20)';
  104.         $default "DEFAULT 'def' NOT NULL";
  105.         $date_literal ' DATE ';
  106.         $tabletype '';
  107.         break;
  108.     case 'ifx':
  109.         // doing this for ifx to keep certain versions happy
  110.                 $null '';
  111.         $chrc 'CHAR(255)';
  112.         $chrd 'CHAR(20)';
  113.         $default "DEFAULT 'def' NOT NULL";
  114.         $tabletype '';
  115.         break;
  116.     case 'msql':
  117.         $null '';
  118.         $chrc 'CHAR(255)';
  119.         $chrd 'CHAR(20)';
  120.         $default '';
  121.         $tabletype '';
  122.         break;
  123.     case 'mysql':
  124.     case 'mysqli':
  125.         $null 'NULL';
  126.         $chrc 'VARCHAR(255)';
  127.         $chrd 'VARCHAR(20)';
  128.         $default "DEFAULT 'def' NOT NULL";
  129.         if (!empty($needinnodb)) {
  130.             $tabletype 'TYPE=INNODB';
  131.         else {
  132.             $tabletype '';
  133.         }
  134.         break;
  135.     default:
  136.         $null 'NULL';
  137.         $chrc 'VARCHAR(255)';
  138.         $chrd 'VARCHAR(20)';
  139.         $default "DEFAULT 'def' NOT NULL";
  140.         $tabletype '';
  141. }
  142.  
  143. switch ($dbh->phptype{
  144.     case 'dbase':
  145.         // file exists or was created in DB_dbase::connect()
  146.                 break;
  147.     default:
  148.         $test_mktable_query = "
  149.             CREATE TABLE phptest (
  150.               a INTEGER $null,
  151.               b CHAR(40) $default,
  152.               cc $chrc $null,
  153.               d $chrd $null$tabletype
  154.         ";
  155. }
  156.  
  157.  
  158. $dbh->query($test_mktable_query);
  159. $dbh->query("INSERT INTO phptest VALUES(42, 'bing', 'This is a test', '1999-11-21')");
  160.  
  161. $dbh->setErrorHandling(PEAR_ERROR_RETURN);

Documentation generated on Tue, 20 Mar 2007 05:30:37 -0500 by phpDocumentor 1.3.0. PEAR Logo Copyright © PHP Group 2004.