Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Practical PHP 7, MySQL 8, and MariaDB Website Databases
PREMIUM
Số trang
561
Kích thước
15.2 MB
Định dạng
PDF
Lượt xem
1307

Practical PHP 7, MySQL 8, and MariaDB Website Databases

Nội dung xem thử

Mô tả chi tiết

Practical PHP 7,

MySQL 8, and MariaDB

Website Databases

A Simplified Approach to Developing

Database-Driven Websites

Second Edition

Adrian W. West

Steve Prettyman

Practical PHP 7,

MySQL 8, and MariaDB

Website Databases

A Simplified Approach to Developing

Database-Driven Websites

Second Edition

Adrian W. West

Steve Prettyman

Practical PHP 7, MySQL 8, and MariaDB Website Databases: A Simplified Approach to Developing

Database-Driven Websites

Adrian W. West Steve Prettyman

Colyton, Devon, United Kingdom Key West, Florida, USA

ISBN-13 (pbk): 978-1-4842-3842-4 ISBN-13 (electronic): 978-1-4842-3843-1

https://doi.org/10.1007/978-1-4842-3843-1

Library of Congress Control Number: 2018957652

Copyright © 2018 by Adrian W. West and Steve Prettyman

This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the

material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation,

broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage

and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or

hereafter developed.

Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with

every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an

editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark.

The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are

not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to

proprietary rights.

While the advice and information in this book are believed to be true and accurate at the date of publication,

neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or

omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material

contained herein.

Managing Director, Apress Media LLC: Welmoed Spahr

Acquisitions Editor: Steve Anglin

Development Editor: Matthew Moodie

Coordinating Editor: Mark Powers

Cover designed by eStudioCalamar

Cover image designed by Freepik (www.freepik.com)

Distributed to the book trade worldwide by Springer Science+Business Media New York,

233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail

[email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC

and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc).

SSBM Finance Inc is a Delaware corporation.

For information on translations, please e-mail [email protected]; for reprint, paperback, or audio

rights, please email [email protected].

Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and

licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales

web page at www.apress.com/bulk-sales.

Any source code or other supplementary material referenced by the author in this book is available to

readers on GitHub via the book's product page, located at www.apress.com/9781484238424. For more

detailed information, please visit www.apress.com/source-code.

Printed on acid-free paper

iii

Contents

About the Authors�������������������������������������������������������������������������������������������������� xiii

Acknowledgments���������������������������������������������������������������������������������������������������xv

Introduction�����������������������������������������������������������������������������������������������������������xvii

■Chapter 1: Create and Test a Database and Table ������������������������������������������������� 1

Defining Developer, Administrator, and User �������������������������������������������������������������������� 2

Defining Interactive Websites ����������������������������������������������������������������������������������������������������������������� 2

Summary������������������������������������������������������������������������������������������������������������������������ 31

■Chapter 2: Create Web Pages That Interact with Users��������������������������������������� 33

Creating the Folder for Holding the Database Pages ����������������������������������������������������� 34

Creating the Temporary Template����������������������������������������������������������������������������������� 34

Introducing the PHP include() Function ������������������������������������������������������������������������� 36

The Included Header File���������������������������������������������������������������������������������������������������������������������� 37

The Included Menu File ������������������������������������������������������������������������������������������������������������������������ 39

The Included Information Column��������������������������������������������������������������������������������������������������������� 40

The Included Footer File ����������������������������������������������������������������������������������������������������������������������� 41

The Interactive Version of the Template ������������������������������������������������������������������������� 42

Connecting to the Database ������������������������������������������������������������������������������������������� 44

The Registration Page �������������������������������������������������������������������������������������������������������������������������� 47

The PHP Keyword echo �������������������������������������������������������������������������������������������������� 58

The “Thank You” Page���������������������������������������������������������������������������������������������������� 58

Displaying Error Messages That Are Collected in an Array��������������������������������������������� 60

■ Contents

iv

Hashing the Password���������������������������������������������������������������������������������������������������� 61

Viewing Members’ Records�������������������������������������������������������������������������������������������� 61

The View Users Page������������������������������������������������������������������������������������������������������ 61

The Change Password Page������������������������������������������������������������������������������������������� 65

Confirming a Successful Password Change������������������������������������������������������������������� 72

Testing the Tutorial’s Pages ������������������������������������������������������������������������������������������������������������������ 72

More About Arrays���������������������������������������������������������������������������������������������������������� 73

Summary������������������������������������������������������������������������������������������������������������������������ 74

■Chapter 3: Create Login/Logout Functionality for Members and

an Administrator ������������������������������������������������������������������������������������������������� 75

Creating the logindb Database and users Table������������������������������������������������������������� 76

Removing or Replacing Redundant Menu Buttons in the Headers��������������������������������� 77

Adding a Login Button to the Home Page Header �������������������������������������������������������������������������������� 78

Removing Redundant Buttons from the Registration and New Password Headers ����������������������������� 79

The Revised Registration Page������������������������������������������������������������������������������������������������������������� 79

The New Header for the New Password Page�������������������������������������������������������������������������������������� 80

A New Header Menu for the Members page ���������������������������������������������������������������������������������������� 82

Amend the Header for the “Thank You” Page��������������������������������������������������������������������������������������� 82

The Registration Page and Undesirable Characters������������������������������������������������������� 84

Registering Some Members ����������������������������������������������������������������������������������������������������������������� 87

Differentiating Between Two Types of Membership ������������������������������������������������������� 88

Creating User Levels to Limit Access to Private Pages �������������������������������������������������� 88

Log In������������������������������������������������������������������������������������������������������������������������������ 91

The Header for the Login Page ������������������������������������������������������������������������������������������������������������� 91

The Login Page������������������������������������������������������������������������������������������������������������������������������������� 92

Sessions ����������������������������������������������������������������������������������������������������������������������������������������������� 99

A Members-Only Page�������������������������������������������������������������������������������������������������� 101

Planning the Administrator’s Role �������������������������������������������������������������������������������� 104

A New Header for the Administration Page ���������������������������������������������������������������������������������������� 105

■ Contents

v

Testing the Login/Logout Function ������������������������������������������������������������������������������� 109

Amending and Deleting Individual Records���������������������������������������������������������������������������������������� 109

Summary���������������������������������������������������������������������������������������������������������������������� 110

■Chapter 4: Create an Administration Interface�������������������������������������������������� 111

The Administration Database ��������������������������������������������������������������������������������������� 111

The Users Table ���������������������������������������������������������������������������������������������������������������������������������� 113

Revising the View Users Page to Include Editing and Deleting ������������������������������������ 115

Displaying Pages of Records (Pagination)�������������������������������������������������������������������� 121

Planning the Search Criteria ���������������������������������������������������������������������������������������� 128

A Temporary Search Page for Displaying Specified Members ������������������������������������� 128

The Search Form���������������������������������������������������������������������������������������������������������� 132

The Final Form Handler for Receiving Search Form Input ������������������������������������������� 135

Editing Records ������������������������������������������������������������������������������������������������������������ 139

Deleting Records �������������������������������������������������������������������������������������������������������������������������������� 145

Summary���������������������������������������������������������������������������������������������������������������������� 150

■Chapter 5: Expand and Enrich Your Website ����������������������������������������������������� 151

Creating a New Database, a Table with 15 Columns, and a Price Table����������������������� 151

Creating the File for Connecting to the Database������������������������������������������������������������������������������� 152

Creating the Tables ����������������������������������������������������������������������������������������������������������������������������� 153

Using ENUM���������������������������������������������������������������������������������������������������������������������������������������� 154

The Importance of Documentation������������������������������������������������������������������������������� 154

Extending the Registration Form and Adding a Pull-Down Menu��������������������������������� 156

Always Announce Prices and Fee Payments Up-Front����������������������������������������������������������������������� 157

Adding PayPal Debit/Credit Card Images ��������������������������������������������������������������������� 168

Including PayPal on the “Thank You” Page ������������������������������������������������������������������ 168

Registering Some Members����������������������������������������������������������������������������������������� 173

A Small Amendment to the Login Page ���������������������������������������������������������������������������������������������� 175

Amending the Administrator’s Header ������������������������������������������������������������������������� 175

Adding Class and Paid to the admin_view_users Table����������������������������������������������� 177

■ Contents

vi

Searching and Editing Records ������������������������������������������������������������������������������������ 181

Modifying the Form for Editing Records��������������������������������������������������������������������������������������������� 184

Summary���������������������������������������������������������������������������������������������������������������������� 190

■Chapter 6: Add the Finishing Touches: Security and Validation ������������������������ 191

Creating the Database�������������������������������������������������������������������������������������������������� 191

Creating the File for Connecting to the Database������������������������������������������������������������������������������� 192

Creating the users Table by Importing a SQL Dump File ���������������������������������������������� 193

Registering Some Members Manually������������������������������������������������������������������������������������������������ 195

Adding a Title Column to the users Table ��������������������������������������������������������������������� 197

Creating the Prices Table by Importing a SQL Dump File ������������������������������������������������������������������� 199

Tidying Up the Folders and Filing System�������������������������������������������������������������������� 200

Degrees of Security������������������������������������������������������������������������������������������������������ 200

Adding a Layer of Security������������������������������������������������������������������������������������������������������������������ 200

An Increased Layer of Protection�������������������������������������������������������������������������������������������������������� 202

Validation and Sanitization������������������������������������������������������������������������������������������� 202

The filter_var() Function ��������������������������������������������������������������������������������������������������������������������� 202

Validation�������������������������������������������������������������������������������������������������������������������������������������������� 202

Sanitization����������������������������������������������������������������������������������������������������������������������������������������� 204

Validating Telephone Numbers ����������������������������������������������������������������������������������������������������������� 205

A Safer Registration Page �������������������������������������������������������������������������������������������� 205

Searching for a Title, an Address, or a Telephone Number������������������������������������������� 221

Viewing the Retrieved Title, Address, and Phone Number������������������������������������������������������������������ 225

Editing the Title, Addresses, and Telephone Numbers ������������������������������������������������������������������������ 228

Summary���������������������������������������������������������������������������������������������������������������������� 236

■Chapter 7: Migrate to a Host and Back Up Your Website Database������������������� 237

Making Last-Minute Changes �������������������������������������������������������������������������������������� 237

Creating a New Database ������������������������������������������������������������������������������������������������������������������� 238

Allowing Members to Update Their Own Records ������������������������������������������������������������������������������ 240

A Secure Feedback Form ������������������������������������������������������������������������������������������������������������������� 254

■ Contents

vii

The Feedback Form���������������������������������������������������������������������������������������������������������������������������� 255

The “Thank You” Page and the Error Messages ��������������������������������������������������������������������������������� 266

A Common Header ������������������������������������������������������������������������������������������������������� 269

Logging Exceptions and Error �������������������������������������������������������������������������������������� 272

Migrating the Database and Tables to a Remote Host ������������������������������������������������� 274

A Puzzling Error Message������������������������������������������������������������������������������������������������������������������� 275

Creating and Exporting the SQL File��������������������������������������������������������������������������������������������������� 275

Using the GUIs on a Remote Host’s Server����������������������������������������������������������������������������������������� 281

Connecting to the Database on the Remote Host������������������������������������������������������������������������������� 282

Securely Uploading the mysqli_connection.php File�������������������������������������������������������������������������� 283

Uploading the Interactive Pages to the Host��������������������������������������������������������������������������������������� 285

Backing Up Your Database ������������������������������������������������������������������������������������������� 286

Summary���������������������������������������������������������������������������������������������������������������������� 286

■Chapter 8: Create a Product Catalog ����������������������������������������������������������������� 287

Preparing the Database and Administration Plan��������������������������������������������������������� 287

Creating a New Database��������������������������������������������������������������������������������������������� 288

Creating the File for Connecting to the Database��������������������������������������������������������� 289

Security ������������������������������������������������������������������������������������������������������������������������ 290

Creating a Home Page with Search Capability������������������������������������������������������������� 292

The Header for the Majority of the Pages������������������������������������������������������������������������������������������� 293

The Home Page Code ������������������������������������������������������������������������������������������������������������������������� 294

Displaying the Catalog�������������������������������������������������������������������������������������������������� 296

The Header for the Page of Search Results ����������������������������������������������������������������� 303

Creating the House Details Page���������������������������������������������������������������������������������� 304

Creating the Admin/Adding a House Page�������������������������������������������������������������������� 309

The Header for the Administrator’s Page ��������������������������������������������������������������������� 318

Administrator’s View of the Entire Stock of Houses for Sale���������������������������������������� 320

■ Contents

viii

The Administrator’s Search Page ��������������������������������������������������������������������������������� 325

The Result of a Search ����������������������������������������������������������������������������������������������������������������������� 327

The Contact Us Page ���������������������������������������������������������������������������������������������������� 328

Summary���������������������������������������������������������������������������������������������������������������������� 334

■Chapter 9: Join Multiple Tables and Other Enhancements�������������������������������� 335

Introduction to Multiple Tables ������������������������������������������������������������������������������������� 335

Normalization ������������������������������������������������������������������������������������������������������������������������������������� 336

Creating the Database and Tables ������������������������������������������������������������������������������������������������������ 337

Viewing the Connection File ��������������������������������������������������������������������������������������������������������������� 338

Preparing the Tables for Joining��������������������������������������������������������������������������������������������������������� 339

Populating the Two Tables ������������������������������������������������������������������������������������������������������������������ 340

Joining Data from the Two Tables �������������������������������������������������������������������������������� 342

Creating the Third Table���������������������������������������������������������������������������������������������������������������������� 345

Creating Pages to Display the Data from Your Joined Tables ������������������������������������������������������������� 347

The Home Page ���������������������������������������������������������������������������������������������������������������������������������� 347

The Main Menu for the Pages������������������������������������������������������������������������������������������������������������� 349

The Header for All the Pages �������������������������������������������������������������������������������������������������������������� 350

The Page for Viewing the Birds����������������������������������������������������������������������������������������������������������� 351

The Page for Viewing the Locations and Habitats of the Reserves ���������������������������������������������������� 355

Payments by Check������������������������������������������������������������������������������������������������������ 366

A Choice of Payment Method ������������������������������������������������������������������������������������������������������������� 367

Printing Online Forms��������������������������������������������������������������������������������������������������� 375

Summary���������������������������������������������������������������������������������������������������������������������� 376

■Chapter 10: Create a Message Board ���������������������������������������������������������������� 377

The Plan ����������������������������������������������������������������������������������������������������������������������� 377

Creating the Database�������������������������������������������������������������������������������������������������� 378

Creating the Tables������������������������������������������������������������������������������������������������������� 378

Creating the Second Table�������������������������������������������������������������������������������������������� 379

■ Contents

ix

Creating the Registration Form ������������������������������������������������������������������������������������ 385

The “Thank You” Page ������������������������������������������������������������������������������������������������������������������������ 393

Populating the Members Table������������������������������������������������������������������������������������� 394

The Login Page������������������������������������������������������������������������������������������������������������� 395

Logging Out������������������������������������������������������������������������������������������������������������������ 400

Creating a Gateway to a Choice of Quotes ������������������������������������������������������������������� 400

The Form for Posting Quotations���������������������������������������������������������������������������������� 402

Posting Some Quotations ��������������������������������������������������������������������������������������������� 408

The Comical Quotes Page��������������������������������������������������������������������������������������������� 409

The Wise Quotes Page ������������������������������������������������������������������������������������������������������������������������ 413

Adding Search Facilities����������������������������������������������������������������������������������������������� 417

The Header for ViewPosts.php ������������������������������������������������������������������������������������� 420

Searching for Specific Words or Phrases ��������������������������������������������������������������������� 421

The Full Text Search Form������������������������������������������������������������������������������������������������������������������ 422

Displaying the Search Results�������������������������������������������������������������������������������������� 424

The Header for the quotes_found Page���������������������������������������������������������������������������������������������� 427

Enhancing the Message Board������������������������������������������������������������������������������������� 428

Converting the Message Board to a Forum ���������������������������������������������������������������������������������������� 428

Summary���������������������������������������������������������������������������������������������������������������������� 429

■Chapter 11: E-commerce: A Brief Introduction ������������������������������������������������� 431

Security Warning ���������������������������������������������������������������������������������������������������������� 433

The Plan ����������������������������������������������������������������������������������������������������������������������� 433

Creating the PayPal Cart Site ��������������������������������������������������������������������������������������� 434

Creating the PayPal Cart Database and Tables����������������������������������������������������������������������������������� 434

Viewing the Connection File ��������������������������������������������������������������������������������������������������������������� 435

Populating the PayPal Cart Tables ������������������������������������������������������������������������������������������������������ 435

The PayPal Cart Home Page ��������������������������������������������������������������������������������������������������������������� 438

Using the PayPal Cart Home Page to Search for Paintings����������������������������������������������������������������� 441

Integrating with the PayPal Shopping Cart Buttons���������������������������������������������������������������������������� 444

■ Contents

x

Creating a Custom Cart ������������������������������������������������������������������������������������������������ 450

The Custom Cart Home Page�������������������������������������������������������������������������������������������������������������� 452

Create the Custom Cart Database and Tables ������������������������������������������������������������������������������������ 452

Retrieving a Forgotten Password ������������������������������������������������������������������������������������������������������� 460

The Custom Cart Search Page������������������������������������������������������������������������������������������������������������ 464

Adding Paintings to a Table for a Custom Shopping Cart ������������������������������������������������������������������� 465

The Checkout Page����������������������������������������������������������������������������������������������������������������������������� 477

The Additional Administrative Tasks ��������������������������������������������������������������������������������������������������� 477

Summary���������������������������������������������������������������������������������������������������������������������� 478

■Chapter 12: Take a Brief Look at Oracle MySQL 8 ��������������������������������������������� 479

Advantages of Upgrading ��������������������������������������������������������������������������������������������� 479

Installing MySQL 8 Community Server������������������������������������������������������������������������� 481

Exploring the Features of MySQL Workbench �������������������������������������������������������������� 488

Connecting PHP 7 to the MySQL 8 Community Server������������������������������������������������� 495

Migrating to MySQL 8 Community Server�������������������������������������������������������������������� 498

Using Our PHP Files with MySQL 8 Community Server������������������������������������������������ 502

Summary���������������������������������������������������������������������������������������������������������������������� 505

■Appendix A: Troubleshooting����������������������������������������������������������������������������� 507

Browser Quirks������������������������������������������������������������������������������������������������������������� 508

Tables Not Displaying��������������������������������������������������������������������������������������������������� 508

A Style Change Has No Effect �������������������������������������������������������������������������������������� 509

Included Items Missing from the Display ��������������������������������������������������������������������� 509

A Page Fails to Validate������������������������������������������������������������������������������������������������ 509

A PayPal Pull-Down Menu Does Not Work ������������������������������������������������������������������� 509

Access Denied�������������������������������������������������������������������������������������������������������������� 509

PHP Error Levels����������������������������������������������������������������������������������������������������������� 510

Call to an Undefined Function �������������������������������������������������������������������������������������� 510

Cannot Redeclare Function ������������������������������������������������������������������������������������������ 510

■ Contents

xi

Undefined Index or Undefined Variable ������������������������������������������������������������������������ 510

Empty Variable Value���������������������������������������������������������������������������������������������������� 511

Headers Already Sent��������������������������������������������������������������������������������������������������� 511

Blank Screen ���������������������������������������������������������������������������������������������������������������� 511

Unexpected End of File in Line xxx������������������������������������������������������������������������������� 511

Parse Error and Unexpected Characters ���������������������������������������������������������������������� 512

Unexpected T_STRING�������������������������������������������������������������������������������������������������� 512

Unexpected T_ELSE������������������������������������������������������������������������������������������������������ 513

Wrong Equal Sign��������������������������������������������������������������������������������������������������������� 513

Failed to Open Stream�������������������������������������������������������������������������������������������������� 513

Syntax Errors���������������������������������������������������������������������������������������������������������������� 513

Warning: Division by Zero��������������������������������������������������������������������������������������������� 514

Display Is Not What Was Expected ������������������������������������������������������������������������������� 514

Reference to a Primary Key Could Not Be Created������������������������������������������������������� 514

Element <style> Not Allowed as Child of Element <div>�������������������������������������������� 514

Problem with Prepared Statement������������������������������������������������������������������������������� 514

Logical Errors ��������������������������������������������������������������������������������������������������������������� 515

The Internet Is Your Friend ������������������������������������������������������������������������������������������� 515

Summary���������������������������������������������������������������������������������������������������������������������� 515

■Appendix B: Resources�������������������������������������������������������������������������������������� 517

PHP Quick Reference ��������������������������������������������������������������������������������������������������� 517

Arrays ������������������������������������������������������������������������������������������������������������������������������������������������� 517

Bootstrap Template ������������������������������������������������������������������������������������������������������ 533

MySQL and phpMyAdmin Quick Reference������������������������������������������������������������������ 534

date_time ������������������������������������������������������������������������������������������������������������������������������������������� 535

INSERT������������������������������������������������������������������������������������������������������������������������������������������������ 536

SELECT ����������������������������������������������������������������������������������������������������������������������������������������������� 536

UPDATE����������������������������������������������������������������������������������������������������������������������������������������������� 536

■ Contents

xii

What Next?������������������������������������������������������������������������������������������������������������������� 537

Resources��������������������������������������������������������������������������������������������������������������������� 537

Books on PHP and MySQL for Databases ������������������������������������������������������������������������������������������� 537

PHP and MySQL Internet Resources��������������������������������������������������������������������������������������������������� 538

E-commerce Resources ��������������������������������������������������������������������������������������������������������������������� 538

Summary���������������������������������������������������������������������������������������������������������������������� 539

Index��������������������������������������������������������������������������������������������������������������������� 541

xiii

About the Authors

Adrian W. West resigned as a chartered design engineer to become the UK director of a correspondence

school. He has been teaching in one form or another since 1982. He introduced computers into his

workplace in 1987 and taught the staff how to use them. For four years, he taught undergraduates computer

skills at a college in Cheshire in the United Kingdom.

Adrian lives in Colyton, a town in Devon, England, and for the last 18 years, he has designed and

produced websites for UK businesses and charities.

Adrian is the author of three books published by Apress: Practical HTML5 Projects, a book of tips and

tricks (now rather out of date); Practical PHP and MySQL Website Databases (the first edition of this book);

and Practical Web Design for Absolute Beginners (published in 2016).

Steve Prettyman earned his Bachelor of Arts degree in secondary education from Oglethorpe University

in 1979. He quickly began his teaching career as a high school mathematics instructor while continuing

his education by earning a master’s degree in business information systems from Georgia State University

(1985). Since then, Steve has spent more than 30 years in the IT industry. The last almost 20 of those he

has been an instructor and professor at Chattahoochee Technical College, Kennesaw State University, and

Southern Polytechnic State University. He is currently the Computer Science Department chairperson

for Florida Keys Community College in Key West, Florida. His primary teaching responsibilities include

programming, web design, and web application development.

xv

Acknowledgments

I thank my wife, Janice, for her love, support, and encouragement, and for taking over my share of the chores

so that I could concentrate on this edition.

My thanks go to the team at Apress and to all the people in Internet forums who helped me and replied

to my queries.

My special thanks go to my co-author, Steve Prettyman, who converted the first edition code and

instructions to the latest versions of PHP 7 and MySQL/MariaDB for this second edition.

—Adrian W. West

I thank my partner and wife for her love and support for almost 25 years. Her reminders that I needed to

get my head out of the book and take a break to enjoy life were vital in this process. My children also stared

at me when I ignored them for too long to let me know that I should stop writing and coding to take them

outside to swim in the pool. Can we say that Pixee and Buster, our four-legged children, are a little spoiled?

I especially want to thank Adrian W. West and Apress for allowing me to update his successful

first edition to provide a modern-day approach to his logical pattern to teaching interactive database

programming using PHP.

—Steve Prettyman

Tải ngay đi em, còn do dự, trời tối mất!