[ Index ]
 

Code source de SPIP Agora 1.4

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/Pear/tests/ -> errors.inc (source)

   1  <?php
   2  
   3  function errhandler($obj)
   4  {
   5      if ($obj->getCode() == DB_ERROR) {
   6          print '  unknown: ' . $obj->getUserInfo()."\n";
   7      } else {
   8          $msg = $obj->getMessage();
   9          print "  $msg";
  10          if (substr($msg, -1) != "\n") {
  11              print "\n";
  12          }
  13      }
  14  }
  15  
  16  $dbh->setErrorHandling(PEAR_ERROR_CALLBACK, "errhandler");
  17  
  18  
  19  print "Trying to provoke DB_ERROR_NOSUCHTABLE\n";
  20  $dbh->query('SELECT * FROM tableThatsBogus');
  21  
  22  print "Trying to provoke DB_ERROR_ALREADY_EXISTS for create table\n";
  23  $dbh->query($test_mktable_query);
  24  
  25  print "Trying to provoke DB_ERROR_NOSUCHTABLE\n";
  26  $dbh->query('DROP TABLE tableThatsBogus');
  27  
  28  
  29  print "Trying to provoke DB_ERROR_CONSTRAINT for primary key insert duplicate\n";
  30  $dbh->setErrorHandling(PEAR_ERROR_RETURN);
  31  $dbh->query('DROP TABLE a');
  32  $dbh->setErrorHandling(PEAR_ERROR_CALLBACK, 'errhandler');
  33  $dbh->query('CREATE TABLE a (a INTEGER NOT NULL, PRIMARY KEY (a))');
  34  $dbh->query('INSERT INTO a VALUES (1)');
  35  $dbh->query('INSERT INTO a VALUES (1)');
  36  
  37  print "Trying to provoke DB_ERROR_CONSTRAINT for primary key update duplicate\n";
  38  $dbh->query('INSERT INTO a VALUES (2)');
  39  $dbh->query('UPDATE a SET a=1 WHERE a=2');
  40  
  41  
  42  print "Trying to provoke DB_ERROR_CONSTRAINT for unique key insert duplicate\n";
  43  $dbh->setErrorHandling(PEAR_ERROR_RETURN);
  44  $dbh->query('DROP TABLE a');
  45  $dbh->setErrorHandling(PEAR_ERROR_CALLBACK, 'errhandler');
  46  $dbh->query('CREATE TABLE a (a INTEGER NOT NULL, UNIQUE (a))');
  47  $dbh->query('INSERT INTO a VALUES (1)');
  48  $dbh->query('INSERT INTO a VALUES (1)');
  49  
  50  print "Trying to provoke DB_ERROR_CONSTRAINT for unique key update duplicate\n";
  51  $dbh->query('INSERT INTO a VALUES (2)');
  52  $dbh->query('UPDATE a SET a=1 WHERE a=2');
  53  
  54  
  55  print "Trying to provoke DB_ERROR_CONSTRAINT for foreign key on insert\n";
  56  $dbh->setErrorHandling(PEAR_ERROR_RETURN);
  57  $dbh->query('DROP TABLE b');
  58  $dbh->query('DROP TABLE a');
  59  $dbh->setErrorHandling(PEAR_ERROR_CALLBACK, 'errhandler');
  60  switch ($dbh->phptype) {
  61      case 'mysql':
  62      case 'mysqli':
  63          $dbh->query('CREATE TABLE a (a INT NOT NULL, '
  64                      . 'PRIMARY KEY (a)) '
  65                      . 'TYPE=INNODB');
  66          $dbh->query('CREATE TABLE b (b INT, '
  67                      . 'INDEX par_ind (b), '
  68                      . 'FOREIGN KEY (b) REFERENCES a (a)) '
  69                      . 'TYPE=INNODB');
  70          break;
  71      default:
  72          $dbh->query('CREATE TABLE a (a INTEGER NOT NULL, PRIMARY KEY (a))');
  73          $dbh->query('CREATE TABLE b (b INTEGER REFERENCES a (a))');
  74  }
  75  $dbh->query('INSERT INTO a (a) values (1)');
  76  $dbh->query('INSERT INTO b (b) values (2)');
  77  switch ($dbh->phptype) {
  78      case 'sqlite':
  79          print "            OK  $dbh->phptype doesn't consider this an error\n";
  80          break;
  81  }
  82  
  83  print "Trying to provoke DB_ERROR_CONSTRAINT for foreign key on delete\n";
  84  $dbh->query('INSERT INTO b (b) values (1)');
  85  $dbh->query('DELETE FROM a WHERE a = 1');
  86  switch ($dbh->phptype) {
  87      case 'sqlite':
  88          print "            OK  $dbh->phptype doesn't consider this an error\n";
  89          break;
  90  }
  91  
  92  
  93  print "Trying to provoke DB_ERROR_CONSTRAINT_NOT_NULL on insert\n";
  94  $dbh->setErrorHandling(PEAR_ERROR_RETURN);
  95  $dbh->query('DROP TABLE peartestnull');
  96  $dbh->setErrorHandling(PEAR_ERROR_CALLBACK, 'errhandler');
  97  $dbh->query('CREATE TABLE peartestnull (a CHAR(3) NOT NULL)');
  98  $dbh->query('INSERT INTO peartestnull VALUES (NULL)');
  99  
 100  print "Trying to provoke DB_ERROR_CONSTRAINT_NOT_NULL on update\n";
 101  $dbh->query("INSERT INTO peartestnull VALUES ('one')");
 102  $dbh->query("UPDATE peartestnull SET a = NULL WHERE a = 'one'");
 103  switch ($dbh->phptype) {
 104      case 'mysql':
 105      case 'mysqli':
 106          print "            OK  $dbh->phptype doesn't consider this an error\n";
 107          break;
 108  }
 109  
 110  
 111  print "Trying to provoke DB_ERROR_DIVZERO\n";
 112  // Interbase detects the error on fetching
 113  $dbh->getAll('SELECT 0/0 FROM phptest');
 114  switch ($dbh->phptype) {
 115      case 'mssql':
 116      case 'sybase':
 117          print "            OK  PHP's $dbh->phptype extension doesn't report this error\n";
 118          break;
 119      case 'odbc':
 120          switch ($dbh->dbsyntax) {
 121              case 'access':
 122                  print "            OK  odbc($dbh->dbsyntax) doesn't report this error\n";
 123                  break;
 124          }
 125          break;
 126      case 'ifx':
 127      case 'mysql':
 128      case 'mysqli':
 129      case 'sqlite':
 130          print "            OK  $dbh->phptype doesn't consider this an error\n";
 131          break;
 132  }
 133  
 134  print "Trying to provoke DB_ERROR_INVALID_NUMBER\n";
 135  $dbh->query("UPDATE phptest SET a = 'abc' WHERE a = 42");
 136  switch ($dbh->phptype) {
 137      case 'mysql':
 138      case 'mysqli':
 139      case 'sqlite':
 140          print "            OK  $dbh->phptype doesn't consider this an error\n";
 141          break;
 142  }
 143  
 144  print "Trying to provoke DB_ERROR_NOSUCHFIELD\n";
 145  $dbh->query('SELECT e FROM phptest');
 146  
 147  print "Trying to provoke DB_ERROR_SYNTAX\n";
 148  $dbh->query('CREATE');
 149  
 150  
 151  $dbh->setErrorHandling(PEAR_ERROR_RETURN);
 152  $dbh->query('DROP TABLE phptest');
 153  $dbh->query('DROP TABLE b');
 154  $dbh->query('DROP TABLE a');
 155  $dbh->query('DROP TABLE peartestnull');
 156  
 157  ?>


Généré le : Sat Feb 24 14:40:03 2007 par Balluche grâce à PHPXref 0.7