Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
MySQL, MySQLi, PDO or something else - how best to talk to databases from PHP

One of the consideration that users of Open Source programming languages have make is which one of many ways to do any particular task. Open Source tends to result in lots of very clever facilities being provided, many of which overlap in their use, and many modules being provided via libraries such as Pear and Pecl [PHP names being used]. A good example of this is database access - even when you've selected you main database engine you may be left with a baffling array of different ways to access it. I've just completed a short demonstration piece that shows our different pieces of code for accessing the same MySQL database.

I have four different ways I can talk to MySQL ...

a) MySQL_xxx routines. The "original". Quick and easy to code. For a single database connection, there's no need to pass around a "which connection" variable. Gets a bit messy when you may want to make several connections, as you have to then switch to using a connection variable (so you may need to refactor) and horribly tied to MySQL.

b) MySQLi_xxx routines, using a functional (structured) approach. Very similar in many ways to the mysql_ routines, but you have to pass around a "which connection" variable. So this avoids you walking into a cul-de-sac in your early coding, as you can easily add another connection later. Still horribly tied to MySQL.

c) MySQLi_xxx routines, using an OO approach. If you're writing in an object oriented mode, these are far nicer to use - you set up connection objects, get back query objects, and the whole thing naturally follows the OO paradigm. There's no way you can even be tempted along a single connection approach. Oh - but still tied to MySQL ... to a slightly lesser extent.

d) Using PDO. The PHP Data Objects (PDO) extension defines a lightweight, consistent interface for accessing databases in PHP. Each database driver that implements the PDO interface can expose database-specific features as regular extension functions. So PDO lets you state once that it's MySQL you're using and then go ahead with your code without having to keep saying mysql-this and mysql-that. You do still need to be careful not to be tempted into using facilities which are MySQL only, but with care you can write more portable code.

The source code of the demonstration is [here] and you can see the sort of results it would produce when run [here].

We have a brief section on how you may use PHP to talk to the MySQL database on our MySQL course, and we cover talking to various SQL databases including SQLite and MySQL on our PHP Courses.
(written 2011-09-24)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
S159 - MySQL 5 and PHP 5
  [104] mysql_connect or mysql_pconnect in PHP? - (2004-10-30)
  [494] MySQL - a score of things to remember - (2005-11-12)
  [515] MySQL - an FAQ - (2005-12-03)
  [1131] MySQL - Password security (authentication protocol) - (2007-04-02)
  [1417] What software version do we teach? - (2007-10-31)
  [1455] Connecting to MySQL 5 from PHP on Mac OSX Leopard - (2007-12-03)
  [1754] Upgrade from PHP 4 to PHP 5 - the TRY issue - (2008-08-15)
  [1766] Diagrams to show you how - Tomcat, Java, PHP - (2008-08-22)
  [2172] PHP4 v PHP5 - Object Model Difference - (2009-05-11)

S156 - Interfacing Applications to MySQL Databases
  [644] Using a MySQL database from Perl - (2006-03-13)
  [663] Python to MySQL - (2006-03-31)
  [723] Viewing images held in a MySQL database via PHP - (2006-05-17)
  [1381] Using a MySQL database to control mod_rewrite via PHP - (2007-10-06)
  [1450] Easy selection of multiple SQL conditions from PHP - (2007-11-30)
  [1518] Downloading data for use in Excel (from PHP / MySQL) - (2008-01-25)
  [1561] Uploading to a MySQL database through PHP - examples and common questions - (2008-03-02)
  [1885] Hiding a MySQL database behind a web page - (2008-11-15)
  [2263] Mysqldump fails as a cron job - a work around - (2009-06-30)
  [2381] Checking the database connection manually - (2009-08-28)
  [2745] Connecting Python to sqlite and MySQL databases - (2010-04-28)
  [2790] Joining a MySQL table from within a Python program - (2010-06-02)
  [3035] How to display information from a database within a web page - (2010-11-07)
  [3099] Perl - database access - DBD, DBI and DBIx modules - (2010-12-22)
  [3447] Needle in a haystack - finding the web server overload - (2011-09-18)
  [4436] Accessing a MySQL database from Python with mysql.connector - (2015-02-21)

H113 - Using MySQL Databases in PHP Pages
  [572] Giving the researcher power over database analysis - (2006-01-22)
  [581] Saving a MySQL query results to your local disc for Excel - (2006-01-29)
  [647] Checking for MySQL errors - (2006-03-15)
  [666] Database design - get it right from first principles - (2006-04-02)
  [915] Paging through hundreds of entries - (2006-11-05)
  [937] Display an image from a MySQL database in a web page via PHP - (2006-11-22)
  [947] What is an SQL injection attack? - (2006-11-27)
  [1010] Dates, times, clickable diarys in PHP - (2006-12-28)
  [1983] Keeping PHP code in database and running it - (2009-01-09)
  [2071] Setting up a MySQL database from PHP - (2009-03-08)
  [2259] Grouping rows for a summary report - MySQL and PHP - (2009-06-27)
  [2320] Helping new arrivals find out about source code examples - (2009-08-03)
  [2432] Using print_r in PHP to explore mysql database requests - (2009-10-01)
  [2447] MySQL stored procedures / their use on the web from PHP - (2009-10-10)
  [2561] The future of MySQL - (2010-01-03)
  [2628] An example of an injection attack using Javascript - (2010-02-08)
  [4378] What FGW passengers want to talk about / and PHP programming to find out - (2015-01-01)
  [4483] Moving from mysql to mysqli - simple worked example - (2015-05-03)


Back to
Your PHP website - how to factor and refactor to reduce growing pains
Previous and next
or
Horse's mouth home
Forward to
Stepping stones - early coding, and writing re-usable code quickly
Some other Articles
Catching the fishes first?
On this day ... one PHP script with three uses
Away to train - but still around by video for Melksham meetings
Stepping stones - early coding, and writing re-usable code quickly
MySQL, MySQLi, PDO or something else - how best to talk to databases from PHP
Your PHP website - how to factor and refactor to reduce growing pains
Reading and using emails including enclosures on your web server.
Which or ATOC - who reads train fares right?
Why would you want to use a Perl hash?
A threat in the post? Poor marketing practise from Smiletrain?
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2024: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.info/mouth/3455_MyS ... m-PHP.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb