1. PHP With the New PDO::Informix
Presented by: Thomas Beebe
Advanced DataTools Corporation
tom@advancedatatools.com
2. 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)
3. PEAR
●
"PHP Extension and Application Repository"
●
Package management for PHP
●
Offers standards for creating packages for PHP
4. 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.
5. 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
7. Installing
●
Two ways to install:
– extensions (php.ini)
– compiled in (/tmp/php-x.x.x/ext/pdo_informix)
8. 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
11. 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();
12. 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”;
13. 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);
14. 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
15. 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();
●
}
16. 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