Welcome to the evolved Web! In the last few years, the Web has changed dramatically. In its infancy, the Web was a medium used mainly to convey static information ("Look, my home page is on the Web!"). Now, large parts of the Web carry information that is dynamically generated by application programs, on which enterprises and even individuals rely for their intranets and public websites.
Because of the clear benefits of databases (better accessibility and structuring of information), web applications are mostly database driven. The front-end used is the well known (and quickly deployed) web browser, and there is a database system at the back-end. Application programs provide the interface between the browser and the database.
Those who are not operating a database-driven website today are not using the medium to its fullest capability. Also, they could be lagging behind competitors who have made the switch. So it is not a question of whether we should implement a database-driven site, but it is more about when and mostly how to implement it.
Why web applications? They improve user experience and involve them in the process by opening up possibilities such as:
Gathering feedback about the site
Letting users communicate with us and with each other through forums
Ordering goods from our e-commerce site
Enabling easily editable web-based information (content management)
Designing and maintaining databases from the Web
Nowadays, WWW might stand for World-Wide Wave, a big wave that profoundly modifies the way developers think about user interface, data presentation, and most of all, the way data reaches users and comes back to the data center.
This chapter describes the place of phpMyAdmin in the context of PHP/MySQL, explains phpMyAdmin's history, and summarizes its features. Let us look at the solutions currently offered by host providers. The most prevalent is the PHP/MySQL combination.
Well-supported by their respective home sites, http://www.php.net and http://www.mysql.com, this duo has enabled developers to offer a lot of ready-made open-source web applications, and most importantly, enabled in-house developers to quickly put in place solid web solutions.
MySQL, which is mostly compliant with the SQL:2003 standard, is a database system well known for its speed, robustness, and small connection overhead, which is important in a web context where pages must be served as quickly as possible.
PHP, usually installed as a module inside the web server, is a popular scripting language in which applications are written to communicate with MySQL (or other database systems) on the back-end, and browsers on the front-end. Ironically, the acronym's signification has evolved itself along with the Web evolution, from Personal Home Page to Professional Home Page to its current recursive definition: PHP: Hypertext Processor. A reference about the successive name changes can be seen in PHP's source code itself at http://cvs.php.net/viewvc.cgi/php3/CHANGES?r1=1.23&r2=1.24. Available on millions of Web domains, PHP drives its own wave of quickly developed applications.
This chapter describes the place of phpMyAdmin in the context of PHP/MySQL, explains phpMyAdmin's history, and summarizes its features. Let us look at the solutions currently offered by host providers. The most prevalent is the PHP/MySQL combination.
Well-supported by their respective home sites, http://www.php.net and http://www.mysql.com, this duo has enabled developers to offer a lot of ready-made open-source web applications, and most importantly, enabled in-house developers to quickly put in place solid web solutions.
MySQL, which is mostly compliant with the SQL:2003 standard, is a database system well known for its speed, robustness, and small connection overhead, which is important in a web context where pages must be served as quickly as possible.
PHP, usually installed as a module inside the web server, is a popular scripting language in which applications are written to communicate with MySQL (or other database systems) on the back-end, and browsers on the front-end. Ironically, the acronym's signification has evolved itself along with the Web evolution, from Personal Home Page to Professional Home Page to its current recursive definition: PHP: Hypertext Processor. A reference about the successive name changes can be seen in PHP's source code itself at http://cvs.php.net/viewvc.cgi/php3/CHANGES?r1=1.23&r2=1.24. Available on millions of Web domains, PHP drives its own wave of quickly developed applications.
phpMyAdmin is a web application written in PHP and contains—like most web applications—XHTML, CSS, and JavaScript client code. It provides a complete web interface to administering MySQL databases and is widely recognized as the leading application in this field.
Being open source since the start of its existence, it has enjoyed support from numerous developers and translators world wide (being translated into 54 languages at the time of going to press). The project is currently hosted on SourceForge.
Host providers everywhere are showing their trust in phpMyAdmin (official home page at http://www.phpmyadmin.net) by installing it on their servers. In addition, we can install our own copy of phpMyAdmin inside our web space, as long as our provider respects the minimum requirements—see in Chapter 2 the System Requirements section. The popular Cpanel (a website control application) interfaces with phpMyAdmin.

The first internal version (0.9.0) was coded by Tobias Ratschiller and bears the date 1998-09-09. He then released version 1.0.1 on 1998-10-26. The early versions were offered on Tobias's site: http://www.phpwizard.net. (This site is no longer associated with him.) Tobias wrote in the accompanying notes:
Note
"This work is based on Peter Kuppelwieser's MySQL-Webadmin. It was his idea to create a web-based interface to MySQL using PHP3. Although I have not used any of his source-code, there are some concepts I've borrowed from him. phpMyAdmin was created because Peter told me he wasn't going to further develop his (great) tool."
Compared to today's version (nine years after the original), the first version was somewhat limited in features but could nonetheless be used to create databases and tables, edit their structure, and enter and retrieve data. Notice in the figure that follows that the left panel was already there to list database names (not table names yet), and the right panel was the workspace to manage a database or table. This is what the interface for databases looked like in version 1.3.0:

To work on a table, you had the following screen:

I started using phpMyAdmin at version 1.2.0 (released 1998-11-29) and was immediately hooked on the idea of being able to use a web application to maintain a remote database. However, students at Collège de Sherbrooke, where I work in Québec, Canada, are French-speaking folks, so I contacted Tobias and offered to transform his source code by outsourcing all messages in a message file. He accepted the offer and I created the English and the French message files. Then, on 1998-12-27, Tobias released version 1.3.1, the first multi-language version. (Meanwhile, he had managed to create the German message file.)
In 1999 and the first half of 2000, Tobias improved the navigation system, added features, and merged more language files. His project site maintained a discussion forum, so new ideas came along and patches were discussed. Version 2.1.0 was released on 2000-08-06, which was the last version released by Tobias, who had no more time to devote to this project.
However, users were already numerous and asked more of the product. Patches were floating on the Internet, with no way of coordinating them. A security alert (and fix) had been published by a third party, but no new version was being released. On 2001-03-31, Olivier Müller registered the phpMyAdmin project on SourceForge.net, and released a 2.2.0pre1 version. At this time, this was called the unofficial version. This restart of the project attracted some developers, who now had the SourceForge infrastructure (CVS server, forums, bug trackers, mailing lists) to help speed up the development. I personally "re-joined" the project in May 2001 and started fixing and improving the code, as my co-developers were doing.
We became "official" on 2001-05-28, as Tobias accepted our version as the new official one. I remember those months of very intense development effort, with daily improvements and bug fixes, along with new documentation sections. This effort culminated on 2001-08-31 with the release of version 2.2.0.
Here's an excerpt from the announcement file for 2.2.0:
Note
"After 5 months, 5 beta releases, and 4 release candidate versions, the phpMyAdmin developers are pleased to announce the availability of phpMyAdmin 2.2.0. [...] on 31st March 2001, Olivier Müller (Switzerland), supported by Marc Delisle (Québec), Loïc Chapeaux (France) and a team of 8 other developers re-started the phpmyadmin project on SourceForge.net, with the authorization of the original package maintainer. Now, after 5 months of patches, bug fixes, new features and testing, the version 2.2.0 is finally ready."
This version had security fixes, seven new languages (with dynamic language-detection), and the code had been reworked to be CSS2 and XHTML 1.0 compliant, and follow the PEAR coding guidelines. The bookmarks feature appeared in this version—this came from a separate add-on called "phpMyBookmark".
During the following year, the development continued with the release of seven minor versions. The last version of the 2.2.x series is 2.2.7-pl1, which is also the last to have been fully tested under PHP 3. A date to note: 2002-04-03; we registered phpmyadmin.net as the official domain name for the project.
On 2002-08-11, version 2.3.0 was released. There had been so many new features that the pages were getting vertically too big, so this version was the "great split version", displaying sub-pages for each table and database group of features.
The team started a new schedule of releasing a new minor version (2.3.1, 2.3.2 ...) every two months. On 2003-02-23, version 2.4.0 included a new server/user management facility. Then on 2003-05-11, version number jumped to 2.5.0 to mark the new MIME-type cell transformation system.
Version 2.6.0—released on 2004-09-27—added support for the new mysqli
extension available in PHP 5 for better performance and improved security. The interface for this version has been redesigned, including new icons and a theme manager. All these features are explained in this book. On 2005-04-16, version 2.6.2 was born, adding basic support for MySQL's VIEWs.
In June 2005, the first meeting of phpMyAdmin's development team took place in Karlsruhe, Germany during LinuxTag 2005. Six members of the team from Switzerland, Germany, Czech Republic, and Canada were present, displaying phpMyAdmin and discussing its features with the event's attendees. We also celebrated PHP's and MySQL's tenth anniversary on the same occasion.
On 2005-12-04, version 2.7.0 was released. With this version, we ended support for older configuration files—those before phpMyAdmin 2.3.0. Also, in 2.7.0 a new plug-in-based import module made its debut.
Version 2.8.0 was made available on 2006-03-06. It included a new web-based setup mechanism. With 2.8.0 the team started a new numbering scheme for version releases. The 2.8 family contains only fixes for the features already present in 2.8.0. Thus, after 2.8.0, here are some examples of the versions that can be released:
2.8.0.1, for anything urgent like a security fix
2.8.1, containing normal fixes for the 2.8 family
2.9.0, with new features
Version 2.9.0, released on 2006-09-20, added many small improvements like a font size selector, new export formats, and the possibility of using an external authentication method. On 2007-02-27, version 2.10.0's main attraction was the Designer, a new graphical Ajax-based relation manager. Version 2.11.0, released on 2007-08-21, offered support for creating views and for managing procedures, functions, and triggers.
In 2007, phpMyAdmin continues to be popular; the cumulative downloads since April 2001 have reached an impressive count of more than 14 million in September 2007 at the time of press.
phpMyAdmin has won some awards, as can be seen in the Awards section of the project's home page. First, it was awarded "Project of the Month" for December 2002 by the administrators of SourceForge. In the interview-style document we prepared to put on the SourceForge POTM page, I wrote that I was impressed by the download rate of our product, which was three per minute at that time. (Since then we have reached ten per minute on peak days.)
phpMyAdmin received 75% of the votes from the readers of both the German PHP Magazin and its international version, in the category "Best PHP Application/Tool" for 2003. This award was officially presented at the International PHP Conference held at Frankfurt in November 2003 to two members of the team. The German PHP Magazin hosted the readers choice again in 2005 and 2006; phpMyAdmin won for both years in the same category.
SourceForge.net hosted its Community Choice Awards for the first time in 2006 and phpMyAdmin won in two categories: Databases and System Administration. I represented the team at LinuxWorld, Boston in April for the awards presentation. The project also won "Best PHP Application of the Year" at the fifth Annual OS/2 World Awards. At the end of 2006, our project won a Silver Trophy at the third Trophées du Libre contest; I went to France to receive the trophy.
In 2007, at the SourceForge.net Community Choice Awards, phpMyAdmin was nominated in the "Best Tool or Utility for Developers" category, and won the "Best Tool or Utility for SysAdmins" award.
The goal of phpMyAdmin is to offer complete web-based management of MySQL servers and data, and to keep up with MySQL and web standards evolution. While the product is not perfect, it currently includes the most commonly requested features and lots of extra features as well.
The development team constantly develops the product based on the reported bugs and requested features, regularly releasing new versions.
phpMyAdmin offers features that cover basic MySQL database and table operations. It also has an internal relational system that maintains metadata to support advanced features. Finally, system administrators can manage users and privileges from phpMyAdmin. It is important to note that phpMyAdmin's choice of available operations depends on the rights the user has on a specific MySQL server.
The basic features consist of:
Database creation, deletion, renaming, and attribute change
Table creation, renaming, copying, and deletion
Table structure maintenance, including indexes
Special table operations (repair, optimization, changing type)
Data insertion, modification, deletion
Data display in horizontal/vertical mode, and Print view
Data navigation and sorting
Binary data uploading
Data search (table or database)
Querying by example (multi-table)
Batch-loading of data (import)
Exporting structure and data in various formats, with compression
Multi-user and multi-server installation with web-based setup
The advanced features include:
Field-level comments
Foreign keys (with or without InnoDB)
Browse foreign table
Bookmarks of queries
Data dictionary
PDF relational schema and dictionary
SQL queries history
Connection to MySQL using either the traditional
mysql
extension or the newmysqli
extension (in PHP 5)Character-set support for databases, tables, and fields (with MySQL 4.1)
Column contents transformation based on MIME type
Visual Designer for relations
Support for MySQL 5.0 features: views, procedures, triggers, profiling
Theme management to customize the interface's look
The server administration features consist of:
User and privileges management
Database privileges check
Verify server's runtime information and obtain configuration hints
Full server export
In this chapter, we saw how the Web has evolved as a means to deliver applications and why we should use PHP/MySQL to develop these applications. We also took a look at how phpMyAdmin is recognized as a leading application to interface MySQL from the Web, the history of phpMyAdmin, and a brief list of its features.