SHARE
Facebook X Pinterest WhatsApp

PHP and Working with Databases (for the Lazy Sod)

Oct 22, 2002

Database Abstraction and Atomic Operations and Classes Explored

By Justin Vincent


The Lazy Sod

Maybe it’s just me, but after building database driven websites in PHP for the past six years I am starting to get more than a little tired of repeating myself. What I mean to say is… how many times, on how many different projects, and with how many different databases do I have to write something along the lines of:

<?php

	mysql_connect("localhost", "mysql_user", "mysql_password") 
		or
	die("could not connect");

	mysql_select_db("mydb");
	
	$result = mysql_query("SELECT id, name FROM mytable");
	
	while ($row = mysql_fetch_array($result)) 
	{
		printf ("ID: %s  Name: %s", $row[0], $row["name"]);
	}

	mysql_free_result($result);

?>

Is there really any need to make my fingers type this kind of gunk so often? Surely there must be an easier way of working with databases than this? And if so, where do I find that kind of information?

You might say ‘abstraction’ and bring up names like PEAR and ADOdb, and you might be right (if the only thing important to you is being able to use the same code with different databases). The problem is you still have to type out lots of stuff whenever you want to deal with a database. For example, here is the required code using ADOdb:

<?

	include('adodb.inc.php');
	
	$conn = &ADONewConnection('access');
	
	$conn->PConnect('northwind');
	
	$recordSet = &$conn->Execute('select * from products');
	
	if (!$recordSet)
	{
		print $conn->ErrorMsg();
	}
	else
	{
		while (!$recordSet->EOF) 
		{
			print $recordSet->fields[0].' '.$recordSet->fields[1].'';
			$recordSet->MoveNext();
		}
        }
	$recordSet->Close();
	$conn->Close();

?>

Nothing wrong with that, you say. I agree. You can use the same code on lots of different databases, you say. Fair enough, but I want to be even lazier than that. Ah, you say.

Atomic Operations

After extensively scouring the net for examples of how to be a really ‘lazy sod’ with databases and PHP, I found absolutely nothing that could help me. So like the old adage goes, “it’s hard work being lazy”, I set about putting some real mental effort into resolving this problem. What I realized was that I should first break down the problem into a list of atomic operations and requirements (for those not in the know, an atomic operation is an operation that does one thing only – and does it well).

After all, when you stand back and look at it, what does working with databases using PHP really mean? As far as I can see, the majority of the time you only need four or five atomic operations to do ‘most things’ that you need to do:

1) Perform a non-result query such as Insert/Update/Commit

2) Get a single variable from the database

3) Get a single row/column from the database

4) Get a list of results from the database

In fact, when I think about it, all the commercial and non-commercial PHP projects that I have ever worked on have never needed any other operation. I’m not even sure you can do any other operation with a database… Before you scream blue murder, I am not talking about SQL queries here, I am talking about the functions that wrap up the SQL queries. Because no matter how complex the SQL query you write, only one set of results will ever be returned — and as we’ll see, that’s a good thing.

Page 2: Query Result Sets

Recommended for you...

How to Prevent SQL Injections
technologyadv
Jan 12, 2023
Online Courses to Learn PHP
Ronnie Payne
Aug 17, 2022
Adding Data to a Cloud Firestore Database
Bradley L. Jones
Mar 11, 2020
Introduction to Firebase
Database Journal Logo

DatabaseJournal.com publishes relevant, up-to-date and pragmatic articles on the use of database hardware and management tools and serves as a forum for professional knowledge about proprietary, open source and cloud-based databases--foundational technology for all IT systems. We publish insightful articles about new products, best practices and trends; readers help each other out on various database questions and problems. Database management systems (DBMS) and database security processes are also key areas of focus at DatabaseJournal.com.

Property of TechnologyAdvice. © 2025 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.