Spread your database connections with PHP PDO

Less is more


PHP is one of the most commonly used scripting languages on the web - about 35 per cent of websites use PHP. Databases, meanwhile, are undergoing something of a renaissance thanks to web development.

Often one database is used during the development stage of a web application and another database is used in production - MySQL could be used for the former and Oracle for the latter. Reasons for this vary: it could be the availability of a particular database from the PHP web host our your own personal preference as a programmer.

MySQL, Oracle, IBM's DB2 UDB and Microsoft's SQL Server 2005 may be connected using the PHP extensions. Each of the PHP extensions is database specific, though, and the PHP functions used by the different extensions are quite different. Consider the application that uses MySQL in development and Oracle in production: in this scenario, the PHP application won't run on the Oracle database.

That's where the PHP Data Object extension steps in. PHP PDO provides an interface for connecting to many different databases using the same set of PHP functions. The advantage of the PDO extension is that it provides generic connectivity with RDBMS databases. Without the PHP PDO extension a different set of PHP functions would have to be used for the different databases.

In this article I shall explain the simplest way you can connect to a range of popular databases, tailored to developers, using the PHP PDO extension. I shall use MySQL 5.0 Community Server, IBM DB2 9 Trial Version and SQL Server 2005 Express Edition with Oracle's database 10g Standard Edition as I am Oracle certified associate, although Express Edition may be used just as well.

First steps

Before we get started, we need to install the PDO extension. PDO provides a data-access abstraction layer. The PHP 5 distribution is packaged with the PDO extension. Activate the PDO extension by adding the following extension directive to the php.ini configuration file.

extension=php_pdo.dll

We also need to activate the database-specific PDO drivers in php.ini. We shall use the PDO extension with the SQL Server 2005, MySQL, Oracle, and IBM's DB2 UDB databases.

extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_odbc.dll

The PDO ODBC driver is used to connect with the DB2 UDB database. The ntwdblib.dll included with PHP 5 does not connect to SQL Server 2005 from a PHP. Obtain a newer ntwdblib.dll from here and copy ntwdblib.dll to C:/PHP directory. Restart the Apache2 server.

The PDO constructor is used to obtain a connection with a database. The data source name for the different databases-specific drivers is specified as a parameter to the PDO constructor. As you shall notice, only the connection parameters to obtain a connection with the database are different for each database. The procedure to create a table and retrieve data is the same for each of the databases and the same set of functions is used.

MySQL 5.0 Community Server

In a PHP script createMySQLTable_PDO.php create a connection with the MySQL database using the PDO constructor and mysql PDO driver. Specify the connection parameters for the MySQL database; host as localhost, port as 3306 and dbname as test. The connection may be set to be a persistent connection using the PDO::ATTR_PERSISTENT attribute.

$connection = new PDO('mysql:host=localhost;port=3306;dbname=test', $user, $password, array(PDO::ATTR_PERSISTENT => true));

Next, run SQL statements to create a MySQL database table using the exec() function.

$connection->exec($sqlstmt);

To create a MySQL table run the PHP script with the URL: http://localhost/createMySQLTable_PDO.php.

Next page: Oracle 10g

Other stories you might like

  • Pentester pops open Tesla Model 3 using low-cost Bluetooth module
    Anything that uses proximity-based BLE is vulnerable, claim researchers

    Tesla Model 3 and Y owners, beware: the passive entry feature on your vehicle could potentially be hoodwinked by a relay attack, leading to the theft of the flash motor.

    Discovered and demonstrated by researchers at NCC Group, the technique involves relaying the Bluetooth Low Energy (BLE) signals from a smartphone that has been paired with a Tesla back to the vehicle. Far from simply unlocking the door, this hack lets a miscreant start the car and drive away, too.

    Essentially, what happens is this: the paired smartphone should be physically close by the Tesla to unlock it. NCC's technique involves one gadget near the paired phone, and another gadget near the car. The phone-side gadget relays signals from the phone to the car-side gadget, which forwards them to the vehicle to unlock and start it. This shouldn't normally happen because the phone and car are so far apart. The car has a defense mechanism – based on measuring transmission latency to detect that a paired device is too far away – that ideally prevents relayed signals from working, though this can be defeated by simply cutting the latency of the relay process.

    Continue reading
  • Google assuring open-source code to secure software supply chains
    Java and Python packages are the first on the list

    Google has a plan — and a new product plus a partnership with developer-focused security shop Snyk — that attempts to make it easier for enterprises to secure their open source software dependencies.

    The new service, announced today at the Google Cloud Security Summit, is called Assured Open Source Software. We're told it will initially focus on some Java and Python packages that Google's own developers prioritize in their workflows. 

    These two programming languages have "particularly high-risk profiles," Google Cloud Cloud VP and GM Sunil Potti said in response to The Register's questions. "Remember Log4j?" Yes, quite vividly.

    Continue reading
  • Rocket Lab is taking NASA's CAPSTONE to the Moon
    Mission to lunar orbit is further than any Photon satellite bus has gone before

    Rocket Lab has taken delivery of NASA's CAPSTONE spacecraft at its New Zealand launch pad ahead of a mission to the Moon.

    It's been quite a journey for CAPSTONE [Cislunar Autonomous Positioning System Technology Operations and Navigation Experiment], which was originally supposed to launch from Rocket Lab's US launchpad at Wallops Island in Virginia.

    The pad, Launch Complex 2, has been completed for a while now. However, delays in certifying Rocket Lab's Autonomous Flight Termination System (AFTS) pushed the move to Launch Complex 1 in Mahia, New Zealand.

    Continue reading

Biting the hand that feeds IT © 1998–2022