Oracle® Database Express Edition
2 Day + PHP Developer's Guide
11g Release 2 (11.2)
E18555-03
July 2011
Oracle Database Express Edition 2 Day + PHP Developer's Guide, 11g Release 2 (11.2)
E18555-03
Copyright © 2010, 2011, Oracle and/or its affiliates. All rights reserved.
Primary Author: Simon Watt
Contributors: Christopher Jones, Simon Law, Glenn Stokol, Ligaya Turmelle, Johannes Schlüter
This software and related documentation are provided under a license agreement containing restrictions on
use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your
license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license,
transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse
engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is
prohibited.
The information contained herein is subject to change without notice and is not warranted to be error-free. If
you find any errors, please report them to us in writing.
If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it
on behalf of the U.S. Government, the following notice is applicable:
U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data
delivered to U.S. Government customers are "commercial computer software" or "commercial technical data"
pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As
such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and
license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of
the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software
License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.
This software or hardware is developed for general use in a variety of information management
applications. It is not developed or intended for use in any inherently dangerous applications, including
applications that may create a risk of personal injury. If you use this software or hardware in dangerous
applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other
measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages
caused by use of this software or hardware in dangerous applications.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of
their respective owners.
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks
are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD,
Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced
Micro Devices. UNIX is a registered trademark of The Open Group.
This software or hardware and documentation may provide access to or information on content, products,
and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly
disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle
Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your
access to or use of third-party content, products, or services.
iii
Contents
Preface ................................................................................................................................................................ vii
Audience...................................................................................................................................................... vii
Documentation Accessibility.................................................................................................................... vii
Related Documents .................................................................................................................................... vii
Conventions ............................................................................................................................................... viii
1 Introducing PHP with Oracle Database XE
Purpose....................................................................................................................................................... 1-1
Overview of the Sample Application................................................................................................... 1-1
Resources ................................................................................................................................................... 1-2
2 Getting Started
What You Need ........................................................................................................................................ 2-1
Installing Oracle Database Express Edition........................................................................................ 2-1
Unlocking the HR User ..................................................................................................................... 2-2
Database Resident Connection Pooling.......................................................................................... 2-3
Starting the DRCP Pool ..................................................................................................................... 2-5
Installing Apache HTTP Server ............................................................................................................ 2-6
Installing Apache on Windows XP.................................................................................................. 2-6
Installing Apache on Linux .............................................................................................................. 2-7
Testing the Apache Installation.......................................................................................................... 2-10
Installing PHP........................................................................................................................................ 2-10
Installing PHP on Windows.......................................................................................................... 2-10
Installing PHP on Linux................................................................................................................. 2-11
Post PHP Installation Tasks on Windows and Linux................................................................ 2-13
Testing the PHP Installation ............................................................................................................... 2-14
Checking PHP Configuration with phpinfo()............................................................................. 2-14
Testing PHP Connections to Oracle ............................................................................................. 2-16
Installing the NetBeans 7.0 IDE ......................................................................................................... 2-18
Installing NetBeans IDE on Windows ......................................................................................... 2-18
Installing NetBeans IDE on Linux ................................................................................................ 2-19
Configuring NetBeans on Linux and Windows ......................................................................... 2-19
Using NetBeans ............................................................................................................................... 2-19
iv
3 Building a Database Access Class
Connection Constants.............................................................................................................................. 3-1
Creating the Db class............................................................................................................................... 3-2
General Example of Running SQL in PHP OCI8 .............................................................................. 3-5
Running SQL with the Db Class........................................................................................................... 3-6
Testing the Db Class ................................................................................................................................ 3-8
4 Building the AnyCo Application
A Cascading Style Sheet ......................................................................................................................... 4-1
An Application Class for Sessions........................................................................................................ 4-2
Providing a Stateful Web Experience with PHP Sessions................................................................ 4-4
Adding a Page Class ................................................................................................................................ 4-5
The Application Login Page................................................................................................................... 4-7
5 Paging Through Employee Data
Creating the Employee Listing .............................................................................................................. 5-1
Running the Employee List.................................................................................................................... 5-5
6 Showing Equipment Records by Using a REF CURSOR
Introduction to PL/SQL Packages and Package Bodies .................................................................... 6-1
Introduction to PL/SQL Stored Procedures......................................................................................... 6-1
Introduction to REF CURSORs ............................................................................................................. 6-2
The Equipment Table .............................................................................................................................. 6-2
Calling the REF CURSOR in PHP ........................................................................................................ 6-3
7 Error handling
Database Errors......................................................................................................................................... 7-1
Displaying a Custom Error Message .................................................................................................... 7-2
8 Query Performance and Prefetching
Prefetching Overview.............................................................................................................................. 8-1
The Employee Report Page .................................................................................................................... 8-1
Running the Equipment Report............................................................................................................ 8-3
REF CURSOR Prefetching...................................................................................................................... 8-4
9 Inserting Data
Building the Insert Form......................................................................................................................... 9-1
Running the Single Insert Form............................................................................................................ 9-4
CSRF example with ac_add_one.php ................................................................................................... 9-5
10 Inserting Multiple Data Values
Creating the Multiple Insert Form..................................................................................................... 10-1
Running the Multiple Insert Form ................................................................................................... 10-3
v
11 Using JSON and generating a JPEG image
Creating a Simple Web Service Returning JSON ........................................................................... 11-1
Creating a JPEG image ......................................................................................................................... 11-2
12 Uploading and Displaying BLOBs
Creating a Table to Store the Logo ..................................................................................................... 12-1
Uploading Images in PHP OCI8 ........................................................................................................ 12-1
Fetching the Logo and Creating an Image........................................................................................ 12-4
Displaying the Logo.............................................................................................................................. 12-6
13 Monitoring Database Usage of the Application
Overview of Metadata.......................................................................................................................... 13-1
Viewing Metadata ................................................................................................................................. 13-1
More Uses of Metadata......................................................................................................................... 13-3
Metadata and Persistent Connections............................................................................................... 13-3
14 Building Global Applications
Establishing the Environment Between Oracle and PHP ............................................................. 14-1
Manipulating Strings ........................................................................................................................... 14-2
Determining the Locale of the User................................................................................................... 14-2
Developing Locale Awareness............................................................................................................ 14-3
Encoding HTML Pages......................................................................................................................... 14-3
Specifying the Page Encoding for HTML Pages ........................................................................ 14-4
Specifying the Page Encoding in PHP ......................................................................................... 14-4
Organizing the Content of HTML Pages for Translation ............................................................. 14-4
Strings in PHP ................................................................................................................................. 14-4
Static Files......................................................................................................................................... 14-5
Data from the Database.................................................................................................................. 14-5
Presenting Data Using Conventions Expected by the User ......................................................... 14-5
Oracle Date Formats ....................................................................................................................... 14-5
Oracle Number Formats................................................................................................................. 14-6
Oracle Linguistic Sorts.................................................................................................................... 14-7
Oracle Error Messages.................................................................................................................... 14-8
Index