php with the new pdo::informix presented by: thomas beebe advanced datatools corporation...

17
PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation [email protected]

Upload: tamsyn-clarke

Post on 12-Jan-2016

213 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

PHP With the New PDO::Informix

Presented by: Thomas Beebe

Advanced DataTools Corporation

[email protected]

Page 2: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

What is PHP● PHP stands for “PHP: Hypertext Preprocessor”● Started in 1995 by Rasmus Lerdorf as perl scripts● Andi Gutmans and Zeev Suraski launched PHP3 in 1997

to replace the dated PHP/FI● 1998 – PHP 4● 2004 – PHP 5● Provides a very flexible, expendable application

development environment, free to use for any purpose.● Large collection of modules and extensions available

(mostly free of charge)

Page 3: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

PEAR

● "PHP Extension and Application Repository"● Package management for PHP● Offers standards for creating packages for PHP

Page 4: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

PECL

● “PHP Extension Community Library”● Offers a hosting repository of any and all php

extensions, as well as hosting and support for

development.● pdo drivers are provided through pecl.

Page 5: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

Why PDO

● Standardized code and connection methods● ODBC can be troublesome● The ifx_ driver is not overly stable and is buggy● Open source development methodology● IBM support pdo_informix driver● Proper error handling

Page 6: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

Demo 1

Page 7: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

Installing

● Two ways to install:– extensions (php.ini)– compiled in (/tmp/php-x.x.x/ext/pdo_informix)

Page 8: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

Compiling into PHP

● Download the latest pdo_informix driver● Extract it to php_source/ext [it will be

PDO_INFORMIX-1.0.x]● Rename it to pdo_informix● cd ..● ./buildconf –force [this will rebuild configure]● ./configure –help | grep informix (make sure it is

there)● ./configure –args --with-pdo-

informix=$INFORMIXDIR

Page 9: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

Connection Paramaters● $dbh->setAttribute($ATTR,$VALUE);● PDO::ATTR_CASE:

– PDO::CASE_LOWER– PDO::CASE_UPPER– PDO::CASE_NATURAL

● PDO::ATTR_ERRMODE:– PDO::ERRMODE_SILENT– PDO::ERRMODE_WARNING– PDO::ERRMODE_EXCEPTION

● PDO::ATTR_STRINGIFY_FETCHES● PDO::ATTR_ORACLE_NULLS

Page 10: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

 Demo 2

Page 11: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

Binding Paramaters● Safer, faster, often easier to manage.● Insertions use bindParam();● Selects use bindColumn● Insertions:

– $name = “Joe Smith”;– $stmt=$dbh->prepare(“insert into tab_a (name) values

(?)”);– $stmt->bindParam(1, $name);– $stmt->execute();– $name = “John Jones”;– $stmt->bindParam(1, $name);– $stmt->execute();

Page 12: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

Named Bind

● This tends to be easier to maintain for large

inserts/updates.

● $stmt = $dbh->prepare(“insert into test (name)

values (:name)”);● $name = “Papa Smurf”;● $stmt->bindParam(':name', $name);● $stmt->execute();● $name = “Bubba Jones”;● $stmt->execute();

Page 13: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

Binding on Selects

● This is required for reading blobs from the

database● $stmt = $db->prepare("select cat_desc from

catalog”);● $stmt->execute();● $stmt->bindColumn(1, $lob,

PDO::PARAM_STR);● $stmt->fetch(PDO::FETCH_BOUND);

Page 14: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

Binding Paramaters

● LOB needs to be specified, the others are optional

but can help maintain proper data types● PDO::PARAM_LOB – Data Blobs● PDO::PARAM_STR – Char/Varchar/Text● PDO::PARAM_BOOL – Bool● PDO::PARAM_INT - Integer

Page 15: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

Error Handling

● PHP 5 introduced try/catch which can be a

lifesaver.● try { sql stuff here...● } catch (PDOException $e) {● print "Error!: " . $e->getMessage() . "<br/>";● die();● }

Page 16: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

Error Handling (cont)● $dbh->errorInfo();

– Returns an array of the last statement executed– 0: Sqlstate Error Code– 1: Driver specific error number– 2: Driver error message

● Exception handling variable commands– $e->getMessage() = Error message– $e->getLine() = Line Number– $e->getFile() = File that caused the error– $e->getCode() = Code the caused the error– $e->getTrace() = Array of the error trace

Page 17: PHP With the New PDO::Informix Presented by: Thomas Beebe Advanced DataTools Corporation tom@advancedatatools.com

Questions?

Thomas Beebe

Advanced DataTools Corporation

[email protected]