PHP Classes

File: example.sqltypes.php

Recommend this page to a friend!
  Classes of Martin Alterisio   DATA   example.sqltypes.php   Download  
File: example.sqltypes.php
Role: Example script
Content type: text/plain
Description: An usage example
Class: DATA
Access data stored in MySQL tables like arrays
Author: By
Last change: v0.8:
- changed how array offsets are mapped to the conditions of selecting a row (for possible security problems). If available, an unique field is used, and access using the pk is provided using the special property ->byXXXX
- abstraction of sql data types and inboxing of these values into objects with constraints checking
- disabling of inboxing of sql data types is available through property ->withoutInboxing
- new exceptions hierarchy (allows more fine-grained catching of exceptions)
Date: 16 years ago
Size: 4,688 bytes
 

Contents

Class file image Download
<?php
/**
 * @ignore
 */

/**
 * @ignore
 */
require_once('data.mysql5.lib.php');

echo
"Connecting to database...\n";
$DB->connect();
$DB->selectSchema('test');

echo
"Creating test table...\n";
$DB->query('DROP TABLE IF EXISTS `test_table`');
$DB->query('
    CREATE TABLE `test_table` (
      `id` int(11) NOT NULL auto_increment,
      `name` varchar(20) NOT NULL,
      `charfield` char(20) NOT NULL,
      `nullcharfield` char(20) NULL,
      `varcharfield` varchar(20) NOT NULL,
      `intfield` int NOT NULL,
      `nullintfield` int NULL,
      `smallintfield` smallint NOT NULL,
      `decimalfield` decimal(7,3) NOT NULL,
      `datefield` date NULL,
      `timefield` time NULL,
      `datetimefield` datetime NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `name` (`name`)
    )
'
);

echo
"Insert valid row...\n";
$DB['test_table'][] = array(
   
'name' => 'test',
   
'charfield' => '20 char field',
   
'nullcharfield' => null,
   
'varcharfield' => '20 varchar field',
   
'intfield' => 101,
   
'nullintfield' => null,
   
'smallintfield' => 11,
   
'decimalfield' => '123.45',
   
'datefield' => DATA_SQLDate::today(),
   
'timefield' => DATA_SQLTime::now(),
   
'datetimefield' => DATA_SQLDatetime::now(),
);
foreach (
$DB['test_table']['test'] as $name => $value) {
    if (
DATA_SQLType::isNull($value)) {
        echo
" $name: NULL\n";
    } else {
        echo
" $name: |$value|\n";
    }
}

echo
"Insert invalid char(20) field...\n";
echo
" null value...\n";
try {
   
$DB['test_table'][] = array(
       
'name' => 'test2',
       
'charfield' => null,
    );
} catch (
DATA_SQLTypeConstraintFailed $e) {
    echo
" exception " . get_class($e) . " on table `" . $e->getTable() . "` and field `" . $e->getField() . "`\n";
}
echo
" 'too much characters for this field'...\n";
try {
   
$DB['test_table'][] = array(
       
'name' => 'test2',
       
'charfield' => 'too much characters for this field',
    );
} catch (
DATA_SQLTypeConstraintFailed $e) {
    echo
" exception " . get_class($e) . " on table `" . $e->getTable() . "` and field `" . $e->getField() . "`\n";
}

echo
"Insert invalid int field...\n";
echo
" null value...\n";
try {
   
$DB['test_table'][] = array(
       
'name' => 'test2',
       
'intfield' => null,
    );
} catch (
DATA_SQLTypeConstraintFailed $e) {
    echo
" exception " . get_class($e) . " on table `" . $e->getTable() . "` and field `" . $e->getField() . "`\n";
}
echo
" 'not a number'...\n";
try {
   
$DB['test_table'][] = array(
       
'name' => 'test2',
       
'intfield' => 'not a number',
    );
} catch (
DATA_SQLTypeConstraintFailed $e) {
    echo
" exception " . get_class($e) . " on table `" . $e->getTable() . "` and field `" . $e->getField() . "`\n";
}
echo
" '12345678901234567890'...\n";
try {
   
$DB['test_table'][] = array(
       
'name' => 'test2',
       
'intfield' => '12345678901234567890',
    );
} catch (
DATA_SQLTypeConstraintFailed $e) {
    echo
" exception " . get_class($e) . " on table `" . $e->getTable() . "` and field `" . $e->getField() . "`\n";
}

echo
"Insert invalid smallint field...\n";
echo
" '1234567'...\n";
try {
   
$DB['test_table'][] = array(
       
'name' => 'test2',
       
'smallintfield' => '1234567',
    );
} catch (
DATA_SQLTypeConstraintFailed $e) {
    echo
" exception " . get_class($e) . " on table `" . $e->getTable() . "` and field `" . $e->getField() . "`\n";
}

echo
"Insert invalid decimal(7,3) field...\n";
echo
" '12345'...\n";
try {
   
$DB['test_table'][] = array(
       
'name' => 'test2',
       
'decimalfield' => '12345',
    );
} catch (
DATA_SQLTypeConstraintFailed $e) {
    echo
" exception " . get_class($e) . " on table `" . $e->getTable() . "` and field `" . $e->getField() . "`\n";
}
echo
" '0.1234'...\n";
try {
   
$DB['test_table'][] = array(
       
'name' => 'test2',
       
'decimalfield' => '0.1234',
    );
} catch (
DATA_SQLTypeConstraintFailed $e) {
    echo
" exception " . get_class($e) . " on table `" . $e->getTable() . "` and field `" . $e->getField() . "`\n";
}

echo
"Insert invalid date field...\n";
echo
" '2007-02-31'...\n";
try {
   
$DB['test_table'][] = array(
       
'name' => 'test2',
       
'datefield' => '2007-02-31',
    );
} catch (
DATA_SQLTypeConstraintFailed $e) {
    echo
" exception " . get_class($e) . " on table `" . $e->getTable() . "` and field `" . $e->getField() . "`\n";
}
?>