Customer Service 1-800-221-5528

Murach’s PHP and MySQL (2nd Edition)

by Joel Murach and Ray Harris
24 chapters, 896 pages, 378 illustrations
Published December 2014
ISBN 978-1-890774-79-0
List price: $54.50

If you're looking for a career-oriented book to anchor your web programming curriculum, this is a great choice (for the most recent edition, see the 3rd Edition). It lets you teach your students how to build web applications as a first course in programming. But it also lets your students build out their PHP and MySQL skills to a professional level. As a result, it can be used for both beginning and advanced courses.

Latest Edition

Murach's PHP and MySQL (3rd Edition)

Published October 2017

Murach books are always excellent. When I started working with PHP, I was hoping they would release a PHP book. I am thrilled with this book…. It is an excellent learning book, as it walks through all features, but it also is an excellent reference book for advanced programmers. I highly recommend this for PHP and MySQL programming."

Posted at an online bookseller

  • About this Book
  • Table of Contents
  • Courseware
  • FAQs
  • Corrections

Book description

This book gets your students started with PHP and MySQL as quickly as possible and then builds out their skills in a professional way. To present the whole array of PHP and MySQL skills in a manageable progression, this book is divided into four sections.

Section 1: Get started fast with PHP and MySQL

This section is designed to get your students off to a fast start whether or not they have any programming experience:

  • Chapter 1 gives an overview of developing PHP applications
  • Chapter 2 presents a complete subset of PHP
  • Chapter 3 shows how to use a MySQL database
  • Chapter 4 shows how to develop database applications with PHP
  • Chapter 5 shows how to use the MVC pattern to structure the code in an application
  • Chapter 6 shows how to test and debug web applications

When your students finish this section, they will understand how all the pieces of a web application fit together. They will be able to build database-driven web applications of their own. And they’ll be ready for rapid progress in the sections that follow.

Section 2: Master PHP programming

This section expands upon the PHP skills of section 1 with arrays, functions, cookies, sessions, regular expressions, exception handling, libraries, classes and objects…and much more! The last application in this section illustrates an object-oriented approach to data validation that can be used as a model for validating user input...and you won’t find anything like that in most competing books.

Section 3: Master MySQL programming

This section expands upon the MySQL skills of section 1 so your students can build full-fledged database-driven web applications. As a result, it covers:

  • how to design a database
  • how to use SQL DDL statements to create a database
  • how to use SQL DML statements to extract and update the data in a database
  • the advanced PHP skills for developing database applications

Section 4: Advanced skills for building websites

The last section in this book rounds out the web development skills by showing how to:

  • secure a web site
  • send email and access other web sites
  • work with files, uploads, and images

These are the skills that ensure that web applications come across as trustworthy, reliable, and fully professional to the users. Then, the last chapter in this section shows how to put everything together in an e-commerce web site.

What's new in this edition

  • All PHP code has been updated to work with the latest version of PHP
  • All HTML and CSS has been updated to use the best HTML5 and CSS3 practices.
  • Improved coverage of security has been integrated throughout the book, including how to prevent cross-site scripting (XSS) and SQL injection attacks.
  • A third appendix shows how to install all software and source code on Linux.

Why your students will learn faster and better with this text

Like all our books, this one has features that you won’t find in competing books. That’s why we believe you can teach your students faster and better with our book than with any other. Here are just a few of those features:

  • Because section 1 presents a complete subset of PHP and MySQL in just 6 chapters and 204 pages, your students are ready for substantial projects much sooner than they are with competing books.
  • The next three sections present all of the other skills that your students need for developing web applications at a professional level. That brings a level of relevance to the course that isn’t matched by competing books.
  • To show your students how all of the pieces of a professional PHP and MySQL application work together, this book presents the HTML, PHP, and MySQL code for 16 real-world applications. As we see it, the only way to master PHP programming is to study the code in non-trivial applications like these...but this is a missing ingredient in other books.

What courses this book can be used for

A first course in programming

Because this book works for students with no programming experience, it can be used as a first course in programming. In that case, section 1 teaches your students how to use PHP and MySQL to develop a complete database application. That is an exciting accomplishment in just 6 chapters. Then, you can add to that skill set with selected chapters from sections 2, 3, and 4.

A one- or two-term course in PHP and MySQL

If your students have some programming experience, this book works great for a one- or two-term course in PHP and MySQL. Even then, you probably won’t be able to assign all of the chapters and exercises in the book or all of the exercises and projects in the instructor’s materials. But no matter how far you get, your students will be mastering skills at a professional level.

What software your students need

Apache, MySQL, and PHP

To run web applications that use PHP and MySQL, your students need:

  • the Apache web server
  • the MySQL database server
  • PHP

All three of these can be downloaded and installed for free in a single download called XAMPP.

A text editor for PHP code

To edit PHP code, your students can use any text editor. However, a text editor that includes syntax coloring and auto-formatting will help your students develop applications more quickly and with fewer errors. That’s why we recommend:

  • Notepad++ for Windows users
  • TextWrangler for Mac OS users

Both are available for free, and both can be used for entering and editing HTML, CSS, and PHP code. But another option is to use NetBeans, which we recommend instead of a text editor.

Optional: NetBeans

If you would like your students to use an Integrated Development Environment, we recommend the NetBeans IDE for PHP. It includes a text editor that lets your students enter and edit code. It provides an easy way to run applications. And it provides special tools that help your students debug their applications.

One or more browsers

To test any web application, including PHP and MySQL applications, your students need one or more web browsers. For that, we recommend Google Chrome, Mozilla Firefox, and Internet Explorer.

See the appendixes for installing these items

To help your students install these products, the appendixes provide the website addresses and procedures that they will need for both Windows, Mac OS, and Linux systems. 

What people say about this book

"Awesome book. Murach’s PHP and MySQL reads like a learning book but is structured in a way that makes it an excellent reference manual. The left side explanation/right side code orientation took me a little time to warm up to but is actually a much more clean layout and works much better when you are referencing."
- Posted at an online bookseller

"Along with the great organization, ease of learning, and thorough coverage of the technologies and programming practice, this book is simply a pleasure to read. Any developer/techie/geek should enjoy it. A solid 5-star rating all the way."
- Jeff Salter, Developer, California

"As a C# developer, I needed a book that would clear up the sometimes confusing syntax of PHP without requiring me to wade through a lot of concepts I already understood. This book does exactly that. Murach’s unique style of putting explanations on each left page and corresponding examples on each right page is ingeniously simple yet amazingly effective. I frequently scan the sample page first and only read the explanation page when I need further clarification. However, the explanation page is always there if you need it. The result is a very fast read. Also, the editing is superb. So far, I haven’t encountered any errors in the sample source code. Excellent book."
- Posted at an online bookseller

"This is my first Murach book and I love it so much, I now want to go and buy their CSS, JavaScript, and C++ books so I can learn even more about those languages."
- Posted at an online bookseller

"Without a doubt, this book qualifies itself as a very practical book on learning PHP in the shortest time. I would thoroughly recommend this book to all budding PHP web developers out there, including ASP.NET developers who wish to diversify into PHP."
- Jason Ong, ASPNET World

"Murach books are always excellent. When I started working with PHP, I was hoping they would release a PHP book. I am thrilled with this book…. It is an excellent learning book, as it walks through all features, but it also is an excellent reference book for advanced programmers. I highly recommend this for PHP and MySQL programming."
- Posted at an online bookseller

"Compared to the stack of other PHP/MySQL titles on the market, I found Murach to be one of the easiest and fastest books to teach the subject. It effectively compresses the key amounts of information required to understand PHP programming and competently execute a solid PHP application from scratch."
- Mike Riley, Dr. Dobb’s Online

View the table of contents for this book in a PDF: Table of Contents (PDF)

Click on any chapter title to display or hide its content.

Section 1 Get started fast with PHP and MySQL

Chapter 1 Introduction to web development with PHP

The architecture of a web application

How a client-server architecture works

How static web pages are processed

How dynamic web pages are processed

A survey of web application software

Highlights in the history of PHP

Highlights in the history of MySQL

The Product Discount application

The user interface

The HTML file

The CSS file

The PHP file

How to edit and test a PHP application

How to edit a PHP page with a text editor

How to start and stop Apache and MySQL on your own computer

How to deploy a PHP application

How to run a PHP application

How to test and debug a PHP page

How to view the source code for a web page

How to use NetBeans to develop a PHP application

How to work with PHP projects and files

How to edit and test a PHP application

How to import and configure a PHP project

Chapter 2 How to code a PHP application

Basic PHP skills

How to embed PHP in HTML

How to code comments and statements

The six PHP data types

How to declare variables and constants

How to get data from a request

How to use the built-in $_GET array

How to use the built-in $_POST array

When to use the HTTP GET and POST methods

How to work with data

How to code string expressions

How to code echo statements

How to code numeric expressions

How to use the compound assignment operators

How to use some built-in functions

How to use the filter_input function

The Product Discount application

The user interface

The form in the HTML file

The PHP file

How to code control statements

How to code conditional expressions

How to code if statements

How to code while and for statements

How to pass control to another page

The Future Value application

The user interface

The code for the index.php file

The code for the display_results.php file

How to use the PHP documentation

How to access the PHP manual

How to find the documentation you need

Chapter 3 Introduction to relational databases and MySQL

An introduction to relational databases

How a database table is organized

How the tables in a relational database are related

How the columns in a table are defined

The SQL statements for data manipulation

How to select data from a single table

How to select data from multiple tables

How to insert, update, and delete data

An introduction to MySQL

What MySQL provides

Two ways to work with MySQL

How to use phpMyAdmin

How to start phpMyAdmin

How to log in, log out, and change your password

How to import and run a SQL script that creates a database

How to review the data and structure of a table

How to run SQL statements

How to create users with limited privileges

Chapter 4 How to use PHP with a MySQL database

How to connect to a database and handle exceptions

How to connect to a MySQL database

How to handle exceptions

How to get and modify data

How to execute SELECT statements

How to work with the first row of a result set

How to work with all the rows of a result set

How to execute INSERT, UPDATE, and DELETE statements

The Product Viewer application

The user interface

The code

The Product Manager application

The user interface

The code

Chapter 5 How to use the MVC pattern to organize your code

How to use the MVC pattern

An introduction to the MVC pattern

How to code functions

How to redirect requests

The Product Manager application

The user interface

The model

The controller

The view

The Product Catalog application

The user interface

The model

The controller

The view

Chapter 6 How to test and debug a PHP application

An introduction to testing and debugging

Typical test phases for a PHP application

The three types of errors that can occur

Common PHP errors

An easy way to trace the execution of your PHP code

How to debug with xDebug and NetBeans

How to set and remove breakpoints

How to step through code

How to inspect variables

How to inspect the stack trace

Section 2 Master PHP programming

Chapter 7 How to work with form data

How to get data from a form

How to get data from text boxes, password boxes, and hidden fields

How to get data from a radio button

How to get data from a check box

How to get data from an array of check boxes

How to get data from a drop-down list

How to get data from a list box

How to get data from a text area

How to display data on a web page

How to format special characters

How to format line breaks

How to display data with echo and print statements

Chapter 8 How to code control statements

How to code conditional expressions

How to use the equality and identity operators

How to use the relational operators

How to use the logical operators

How to code the selection structures

How to code if statements with else clauses

How to code if statements with else if clauses

How to use the conditional operator

How to code switch statements

How to use a switch statement in the controller

How to code the iteration structures

How to code while loops

How to code do-while loops

How to code for loops

How to use the break and continue statements

Chapter 9 How to work with strings and numbers

How to work with strings

How to create strings

How to use escape sequences

How to work with string length and substrings

How to search a string

How to replace part of a string

How to modify strings

How to convert strings to and from arrays

How to convert strings to and from ASCII values

How to compare strings

How to work with numbers

How to assign integers

How to assign floating-point values

How to use the math functions

How to generate random numbers

Other skills for working with strings and numbers

How to use the sprintf function to format strings and numbers

How to convert strings to numbers

Chapter 10 How to work with dates

How to use timestamps to work with dates

How to create and format timestamps

How to work with timestamps

How to use the strtotime function

Examples of working with timestamps

How to use objects to work with dates

How to use the DateTime class

How to use the DateInterval class

How to use the DateInterval and DateTime classes together

Examples of working with DateTime objects

Chapter 11 How to create and use arrays

How to create and use an array

How to create an array

How to add and delete elements

How to work with variable substitution

How to use for loops to work with arrays

How to create and use an associative array

How to create an associative array

How to add and delete elements

How to work with variable substitution

How to use foreach loops to work with arrays

How to use functions to work with arrays

How to fill, merge, slice, and splice arrays

How to work with queues and stacks

How to get the sum and product of elements

How to search arrays

How to sort arrays

How to modify arrays

How to work with arrays of arrays

Understanding an array of arrays

How to create and use an array of arrays

The Task List Manager application

The user interface

The code for the controller

The code for the view

Chapter 12 How to work with cookies and sessions

How to work with cookies

An introduction to cookies

How to set and get a cookie

How to enable or disable cookies

How to work with sessions

Why session tracking is difficult with HTTP

How session tracking works in PHP

How to start a session

How to set and get session variables

How to end a session

How to manage a session

The Shopping Cart application

The user interface

The controller

The model

The Add Item view

The Cart view

Chapter 13 How to create and use functions

Basic skills for working with functions

How to create and call a function

How to pass arguments by value and by reference

How variable scope works

How to provide default values for parameters

How to use variable-length parameter lists

How to create and use a library of functions

A library of functions

How to set the include path

How function scope works

How to create and use namespaces

Advanced skills for working with functions

How to work with variable functions and callbacks

How to work with anonymous functions

How to work with closures

The Shopping Cart application

The user interface

The model

The controller

The view

Chapter 14 How to create and use objects

How to create and use classes

The code for the Category class

The code for the Product class

How to code properties

How to code constructors and destructors

How to code methods

How to create and use objects

How to code class constants, properties, and methods

How to code class constants

How to code static properties and methods

The object-oriented Product Manager application

The user interface

The model

The controller

The view

Additional skills for working with objects

How to loop through an object’s properties

How to clone and compare objects

How to inspect an object

How to work with inheritance

How to inherit a class

How to use the protected access modifier

How to create abstract classes and methods

How to create final classes and methods

How to work with interfaces

Chapter 15 How to use regular expressions, handle exceptions, and validate data

How to use regular expressions

How to create and use regular expressions

How to match characters

How to use the character class

How to create complex patterns

How to use look-ahead assertions

How to use a multiline regular expression

How to use a global regular expression

How to replace a regular expression with a string

How to split a string on a regular expression

Regular expressions for data validation

How to handle exceptions

How to create and throw exceptions

How to use the try-catch statement

The Registration application

The user interface

The file structure

The model

The controller

The view

A long version of the Registration application

Section 3 Master MySQL programming

Chapter 16 How to design a database

How to design a data structure

The basic steps for designing a data structure

How to identify the data elements

How to subdivide the data elements

How to identify the tables and assign columns

How to identify the primary and foreign keys

How to enforce the relationships between tables

How normalization works

How to identify the columns to be indexed

How to normalize a data structure

The seven normal forms

How to apply the first normal form

How to apply the second normal form

How to apply the third normal form

When and how to denormalize a data structure

A database design tool

An introduction to MySQL Workbench

How to use MySQL Workbench to create database diagrams

Chapter 17 How to use SQL to create a MySQL database

How to work with databases

How to create a database

How to select a database

How to drop a database

How to work with tables

An introduction to MySQL data types

How to create a table

How to code a primary key

How to alter a table

How to drop a table

How to work with indexes

How to create an index

How to drop an index

How to work with users and privileges

A summary of privileges

How to create, rename, and drop users

How to grant privileges

How to revoke privileges

How to view privileges

Other skills for creating a database

How to load data from text files

How to dump a database to a SQL script

The script for the Guitar Shop database

Chapter 18 How to use SQL to work with a MySQL database

How to select data from a single table

How to select columns from a table

How to use an alias for a column

How to select rows with a LIMIT clause

How to select rows with a WHERE clause

How to use the logical operators

How to use the IS NULL operator

How to use the LIKE operator

How to sort rows with an ORDER BY clause

How to select data from multiple tables

How to code an inner join

When and how to use table aliases

How to code summary queries

How to code aggregate functions

How to group queries by column

How to code subqueries

Where to use subqueries

How to code correlated subqueries

How to insert, update, and delete rows

How to insert rows

How to update rows

How to delete rows

Chapter 19 Professional PHP for working with MySQL

Three ways to use PHP to work with MySQL

PDO (PHP Data Objects)

PHP’s mysqli extension

PHP’s MySQL extension

How to work with PDO

How to connect to a database

How to select data

How to insert, update, and delete data

How to work with prepared statements

How to set the error mode for PDO

A model in PDO

How to work with mysqli

How to connect to a database

How to select data

How to insert, update, and delete data

How to work with prepared statements

The object-oriented style compared to the procedural style

A model in mysqli

Chapter 20 A database-driven web site

How to work with large text columns

A simple content management system

How to add HTML tags to text

The include files for the Guitar Shop web site

The home page

The directory structure

The utility files

The view files

The Product Catalog application

The user interface

The controller

The view

The Product Manager application

The user interface

The controller

The view

Section 4 Master the advanced skills for building web sites

Chapter 21 How to create secure web sites

How to use a secure connection

An introduction to secure connections

How SSL authentication works

How to get a digital secure certificate

How to request a secure connection

How to redirect to a secure connection

How to use authentication

Three types of authentication

How to store and validate a password

How to use form-based authentication

How to use basic authentication

How to work with encrypted data

How to encrypt and decrypt data

A class for storing encrypted data

Chapter 22 How to send email and access other web sites

How to send email

How email works

How to set up a test email account

How to use PEAR Mail to send an email

A helper function for sending an email

How to use the helper function to send an email

How to get data from other servers

How to enable the cURL library

How to use cURL to connect to another web server

How to use an API provided by another server

The YouTube Search application

The user interface

The controller

Search view

Email view

Chapter 23 How to work with files, uploads, and images

How to work with files

How to get a directory listing

How to read and write an entire file

How to read and write part of a file

How to read and write CSV data

How to copy, rename, and delete a file

How to upload a file

HTML for uploading a file

PHP for working with an uploaded file

How to work with images

How to get information about an image

How to read and write images

How to resize an image

How to work with transparency

The Image Upload application

The user interface

The utility files

The controller

The view

Chapter 24 An eCommerce web site

An introduction to the web site

Prototyping and stepwise refinement

The directory structure of the web site

The user interface for end users

The Catalog application

The Cart application

The Checkout and Account applications

The My Account page

The user interface for administrators

The Admin Login and Admin Menu pages

The Product Manager application

The Category Manager application

The Order Manager application

The Account Manager application

Appendixes

Appendix A How to set up Windows for this book

How to install Chrome and Notepad++

How to install the Chrome browser

How to install Notepad++

How to install and configure XAMPP

How to install XAMPP

How to start and stop the Apache and MySQL servers

How to configure phpMyAdmin

How to install and configure NetBeans

How to install NetBeans

How to configure xDebug

How to install the book applications and databases

How to install the source code for this book

How to create and restore the databases

How to fix a possible problem with the time zone

Appendix B How to set up Mac OS X for this book

How to install Chrome and TextWrangler

How to install the Chrome browser

How to install TextWrangler

How to install and configure XAMPP

How to install XAMPP

How to configure phpMyAdmin

How to install NetBeans and xDebug

How to install NetBeans

How to install xDebug

How to install the book applications and databases

How to install the source code for this book

How to create and restore the databases

Appendix C How to set up Linux for this book

The Chrome/Chromium browser

How to install the Chromium browser on Ubuntu

How to install the Chrome browser on Fedora

How to install and configure XAMPP

How to install XAMPP

How to start and stop the Apache and MySQL servers

How to change ownership of the htdocs directory

How to configure phpMyAdmin

How to install NetBeans 

How to install NetBeans

How to install xDebug

How to install the book applications and databases

How to install the source code for this book

How to create and restore the databases

If you aren’t already familiar with the supporting courseware that we provide for a book, please go to About our Courseware. As you will see, our courseware consists of the end-of-chapter activities in the book, the files in the student download at our retail site, and the instructor’s materials. These components provide everything that other publishers provide in a way that delivers better results.

If you are familiar with our courseware, here’s a quick summary of the courseware for this book. For a detailed description in PDF format, please read the Instructor’s Summary.

End-of-chapter activities in the book

  • Term lists
  • Chapter summaries
  • Practice exercises

Student download at our retail site

  • Source code and data for the applications in the book
  • Starting code for the exercises in the book
  • Solutions to the book exercises

In the book, appendix A (for Windows), appendix B (for Mac), and appendix C (for Linux) give your students complete instructions for downloading and installing these items on their own systems.

Instructor’s materials

  • Instructional objectives by chapter
  • PowerPoint slides for classroom presentations
  • Test banks in multiple formats
  • A second full set of chapter-by-chapter exercises that aren’t in the book, plus their solutions
  • Student projects that are a true test of competence because they provide minimal guidance, plus their solutions
  • The files that students can download at our retail site: (1) the book applications, (2) starting code for the exercises in the book, and (3) solutions to the exercises in the book

On this page, we’ll be posting answers to the questions that come up most often about this book. So if you have any questions that you haven’t found answered here at our site, please email us. Thanks!

The code presented in chapter 22 (pages 732-743) that uses the YouTube API doesn’t work. Why not?

This book shows how to work with version 2 of the YouTube API. Unfortunately, YouTube stopped supporting this version of its API sometime in December 2015. As a result, the code presented on these pages no longer works correctly. To get this code to work correctly, it needs to be updated to use version 3 of the YouTube API.

The solution is to migrate to version 3 as described here:
      https://developers.google.com/youtube/v3/docs/search/list

This would use a URL more like this to search the videos:
      https://www.googleapis.com/youtube/v3/search?part=snippet&q=fearless

Unfortunately, this requires the app to be registered with YouTube, which requires additional configuration and setup. You can learn more about version 3 of this API here:
      https://developers.google.com/youtube/v3/getting-started

To view the corrections for this book in a PDF, just click on this link: View the corrections

Then, if you find any other errors, please email us so we can correct them in the next printing of the book. Thank you!

Murach college books and courseware since 1974