PHP database abstraction layer
BOINC's PHP code uses the following classes for DB access:
- Class DbConn (html/inc/db_conn.inc)
- Represents a connection to a particular database (not just to a server). The class functions prepend the database name to table names in queries, so there is no confusion if you use multiple databases at once. All MySQL-specific PHP functions (mysql_query(), etc.) are called only from this class.
- Class BoincUser, BoincTeam, etc. (html/inc/boinc_db.inc)
- Each class represents a particular table in the BOINC database, and provides functions for selecting, inserting, updating and enumerating rows. These functions take care of initializing the DbConn layer - you don't have to do this directly.
All PHP code should use these classes exclusively for accessing the DB.
Much of the PHP code conforms to this rule. However, some of the code has not been converted yet. This is divided into:
- Code with direct mysql_*() calls, and with calls to db_init().
- The message-board code (forum_*), which has a separate and more heavyweight abstraction layer. Eventually this code should be converted to use the new abstraction layer.