php & mysql database -...
TRANSCRIPT
Dr. Tom HicksComputer Science Department
PHP & MySQL Database
Database SystemsCSCI-3343
1
WWW Organization
It Is A Good Idea To
Create A Folder For
Each Web Page
Place Most Items, On
Page, In That Folder!2
WWW SetUp
3
Create Folders
Quadratic, FirstPrime, & RandomNo
4
Drag .php Pages Into Their Proper Folders
If You Do So Inside Expression Web, The Links Will Adjust
Within Site!
(You Will Not Have To Change Main-Menu.php)
5
Add The Link Below To The Bottom Of
Quadratic.php
RandomNo.php
FirstPrime.php
<p><A href="../Main-Menu.php"> Return To Main Menu </A>
6
Add The Link Below To The Bottom Of Each
Of Your Other Pages As Well!
Database
Export
With A Script!7
MySQLNative Import - Export
8
Use mysqldump!
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
mysqldump -ptrinity -uroot stanford > c:\temp\stanford2.sql
Command Line Export Database
9
Database
Export
With MySQL
Workbench - Done10
Database
Import
With A Script!11
Use mysql!
Create database Stanford2 must be created before the import!
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
mysql -ptrinity -uroot stanford2 < c:\temp\stanford2.sql
Command Line Import Database
12
Database
Import
With MySQL
Workbench - Done13
phpinfo()
14
Create Page Student-Display.php
Student-Display.php Confirm that the PHP is working!
<?php
phpinfo();
?>
15
Connect To
MySQL
Database
16
Create Folder
Student-Display
17
Create Page
Use Expression Web To Create Page
Student-Display.php
18
Modify Menu Page
Link Student-Display.php
19
Modify Page Student-Display.php
Add The Code:
<?PHP/*================================================================ Connect To MySQL Database ================================================================*/$server ="localhost"; $username="root";$password="trinity";$database="libraryth1";
$con=mysqli_connect($server, $username, $password, $database);?>
We Changed The Original PHP.ini To Make This Work!
20
Create Page Student-Display.php
This is the same as the previous page!
<?php/*================================================================ Connect To MySQL Database ================================================================*/$conn = new mysqli();$conn->connect("localhost","root","trinity","libraryth");
?>
We Changed The Original PHP.ini To Make This Work!
21
Modify php.ini -3-
Edit C:\Program Files\PHP\php.ini
In order to keep PHP lean and mean, many of the optional extensions
are turned off.
We must turn on the MySQL extensions.
22
We Changed The Original PHP.ini To Make This Work!
Modify php.ini -4A-
We must often tell the system where we are storing these optional
(MySQL) extensions.
23
We Changed The Original PHP.ini To Make This Work!
Modify php.ini -4B-
Edit C:\Program Files\PHP\php.ini
We must often tell the system where we are storing these optional
(MySQL) extensions.
24
We Changed The Original PHP.ini To Make This Work!
Database
Query
25
Modify Page Student-Display.php -1-
Change the connection portion to the following:
<?PHP/*================================================================ Connect To MySQL Database ================================================================*/$server ="localhost"; $username="StanfordUser";$password="trinity"; //Use Your Password $database="stanford";
$con=mysqli_connect($server, $username, $password, $database);?>
26
Stanford User Privileges On Stanford DB
Stanford Cannot Change DB.
<?PHP/*================================================================ Connect To MySQL Database ================================================================*/$server ="localhost"; $username="StanfordUser";$password="trinity"; //Use Your Password $database="stanford";
$con=mysqli_connect($server, $username, $password, $database);?>
27
Try Bad Server localhost1
<?PHP/*================================================================ Connect To MySQL Database ================================================================*/$server ="localhost1"; $username="StanfordUser";$password="trinity"; //Use Your Password $database="stanford";
$con=mysqli_connect($server, $username, $password, $database);?>
28
Try Bad UserName StanfordUser1
<?PHP/*================================================================ Connect To MySQL Database ================================================================*/$server ="localhost"; $username="StanfordUser1";$password="trinity"; //Use Your Password $database="stanford";
$con=mysqli_connect($server, $username, $password, $database);?>
29
Try Bad Password trinity1
<?PHP/*================================================================ Connect To MySQL Database ================================================================*/$server ="localhost"; $username="StanfordUser1";$password="trinity1"; //Use Your Password $database="stanford";
$con=mysqli_connect($server, $username, $password, $database);?>
30
Try Bad Database stanford1
<?PHP/*================================================================ Connect To MySQL Database ================================================================*/$server ="localhost"; $username="StanfordUser1";$password="trinity"; //Use Your Password$database="stanford1";
$con=mysqli_connect($server, $username, $password, $database);?>
31
Blank Is Good!-1-
Connection Established!
<?PHP/*================================================================ Connect To MySQL Database ================================================================*/$server ="localhost"; $username="StanfordUser";$password="trinity"; //Use Your Password$database="stanford";
$con=mysqli_connect($server, $username, $password, $database);?>
32
Modify Page Student-Display.php -2-
Add the Query : Use Your Name!
. . ./*================================================================ Query ================================================================*/$query = "SELECT * FROM Users";$recSet = $conn->query($query);
echo "<CENTER><H1> Display Students </H1></CENTER>";echo "<CENTER><H2> Written By Dr. Tom Hicks </H2></CENTER><HR>";
?>
33
Modify Page Student-Display.php -3-
Cycle Through The Record Set Loop: print the data
. . . echo "<CENTER><H1> Display Students</H1></CENTER>";echo "<CENTER><H2> Written By Dr. Tom Hicks </H2></CENTER><HR>";
echo "<pre><P>";/*================================================================ Loop Through Records In Record Set ================================================================*/while(list($sID, $sName, $GPA) = $recSet->fetch_row())
printf("<strong>%3d %-15s %4.2f </strong> <BR>", $sID, $sName, $GPA);
echo "</h2></pre>";?>
34
<p><A href="../Main-Menu.php"> Return To Main Menu </A>
Modify Page Student-Display.php -3-
There are several ways to connect.
There are a number of ways to walk through the records.
35
Inefficient!
Why Read All Of Data If Only Going To Display Part?
36
More Efficient!
Reduce The Transfer Of Data
37
Modify Page Student-Display.php -4-
There are other ways to Generate the same output.
/*================================================================ Loop Through Records In Record Set ================================================================*/while($Rec = $recSet->fetch_row())
printf("<B>%3d %-15s %4.2f </B> <BR>", $Rec[0], $Rec[1], $Rec[2]);
echo "</h2></pre>";
38
About
PHP & MySQLSpecial Thanks To PHP.net For Some Of
The Following Documentation
39
API – Application Programming Interface
An Application Programming Interface, or API, defines the classes,
methods, functions and variables that your application will need to call
in order to carry out its desired task.
In the case of PHP applications that need to communicate with
databases the necessary APIs are usually exposed via PHP
extensions.
APIs can be Procedural or Object-Oriented.
With a procedural API you call functions to carry out tasks
With the object-oriented API you instantiate classes and then call
methods on the resulting objects.
The Object-Priented API is usually the Preferred Interface, as it
is more modern and leads to better organized code.
When writing PHP applications that need to connect to the MySQL
server there are several API options available.
40
MySQL Connector
In the MySQL documentation, the term Connector refers to a piece
of software that allows your application to connect to the MySQL
database server.
MySQL provides connectors for a variety of languages, including
PHP.
41
PHP Extension
In the PHP documentation you will come across another term -
Extension. The PHP code consists of a core, with optional extensions
to the core functionality.
PHP's MySQL-related extensions, such as the mysqli extension,
and the mysql extension, are implemented using the PHP
extension framework.
An extension typically exposes an API to the PHP programmer, to
allow its facilities to be used programmatically. However, some
extensions which use the PHP extension framework do not expose an
API to the PHP programmer.
The PDO MySQL driver extension, for example, does not expose an
API to the PHP programmer, but provides an interface to the PDO
layer above it.
The terms API and extension should not be taken to mean the same
thing, as an extension may not necessarily expose an API to the
programmer.
42
Main PHP API Offerings For MySQL
There are three main API options when considering connecting to a
MySQL database server:
PHP's MySQL Extension
PHP's mysqli Extension
PHP Data Objects (PDO)
43
PHP's MySQL Extension
This is the Original Extension designed to allow you to develop PHP
applications that interact with a MySQL database.
The mysql extension provides a procedural interface and is intended
for use only with MySQL versions older than 4.1.3.
This extension can be used with versions of MySQL 4.1.3 or newer,
but not all of the latest MySQL server features will be available.
This Is Old Technology!:
The majority of references on the Internet demonstrate how to use
the MySQL Extension.
If you are using MySQL versions 4.1.3 or later it is strongly
recommended that you use the mysqli extension instead. YES
The MySQL Extension is being phased out!
The mysql extension source code is located in the PHP extension
directory ext/mysql.
44
PHP's mysqli Extension – 1
The mysqli extension, or as it is sometimes known, the MySQL
improved extension, was developed to take advantage of new
features found in MySQL systems versions 4.1.3 and newer.
The mysqli extension is included with PHP versions 5 and later.
The mysqli extension has a number of benefits, the key
enhancements over the mysql extension being:
Object-oriented interface
Support for Prepared Statements
Support for Multiple Statements
Support for Transactions
Enhanced debugging capabilities
Embedded server support
45
PHP's mysqli Extension – 2
If you are using MySQL versions 4.1.3 or later it is strongly
recommended that you use this extension.
As well as the Object-Oriented Interface the extension also provides a
Procedural Interface.
The mysqli extension is built using the PHP extension framework, its
source code is located in the directory ext/mysqli.
46
PHP Data Objects (PDO)
PHP Data Objects, or PDO, is a database abstraction layer
specifically for PHP applications. PDO provides a consistent API for
your PHP application regardless of the type of database server your
application will connect to.
In theory, if you are using the PDO API, you could switch the
database server you used, from say Firebird to MySQL, and only
need to make minor changes to your PHP code.
While PDO has its advantages, such as a clean, simple, portable API,
its main disadvantage is that it doesn't allow you to use all of the
advanced features that are available in the latest versions of MySQL
server.
For example, PDO does not allow you to use MySQL's support for
Multiple Statements.
PDO is implemented using the PHP extension framework, its source
code is located in the directory ext/pdo.
47
Database
Applications
Have Many Connections
51
Create Folder
C:\InetPub\wwwroot\Secure-Connect
52
Create Page Connection.php -1-
It is often the case that there might be hundreds of web pages that
access a single database. Passwords change. The database host can
change.
We would like an easy way to be able to change the password only
one time.
Create page Connection.asp – include it hundreds of times! When the
time comes to make a change, do it once. Save In Folder Secure-
Connect!
<?PHP/*================================================================ Connect To MySQL Database ================================================================*/$server ="localhost"; $username="StanfordUser";$password="trinity"; //Use Your Password$database="stanford";
$con=mysqli_connect($server, $username, $password, $database);?>
53
Save a Copy of Student-Display.php in
Folder
C:\InetPub\wwwroot\StudentoDisplay
Call It
TestSecureConnection.php
54
Modify Page TestSecureConnection.php<?PHP/*================================================================ Connect To MySQL Database ================================================================*/
include_once "../../Secure-Connect/Connection.php";
/*================================================================ Query 2 ================================================================*/$query2 = "SELECT sID, sName, GPA FROM Student";$recSet2 = $con->query($query);
echo "<CENTER><H1> Display Students</H1></CENTER>";echo "<CENTER><H2> Written By Dr. Tom Hicks </H2></CENTER><HR>";
echo "<pre><P>";
/*================================================================ Loop Through Records In Record Set ================================================================*/while($Rec2 = $recSet->fetch_row())
printf("<B>%3d %-15s %4.2f </B> <BR>",$Rec2[0], $Rec2[1], $Rec2[2]);
echo "</h2></pre>";?> 55
Link TestSecureConnection.php
56
Connection Page Works!
57
Some PHP
Pages
Have Many Queries
58
Save a Copy of TestSecureConnection.php
in Folder
C:\InetPub\wwwroot\StudentoDisplay
59
Call It
TestMultipleQueries.php
Make The Link To Main-Menu.php
60
Goal
Change/*================================================================ Query ================================================================*/$query = "SELECT sID, sName, GPA FROM Student";$recSet = $con->query($query);
61
To
/*================================================================ Query 2 ================================================================*/
$query2 = "SELECT sID, sName, GPA FROM Student";$recSet2 = $con->query($query2);
Change/*================================================================ Loop Through Records In Record Set ================================================================*/while($Rec = $recSet-> fetch_row())
printf("<B>%3d %-15s %4.2f </B> <BR>", $Rec[0], $Rec[1], $Rec[2]);
62
To
/*================================================================ Loop Through Records In Record Set ================================================================*/
while($Rec1 = $recSet2-> fetch_row()) printf("<B>%3d %-15s %4.2f </B> <BR>",
$Rec1[0], $Rec1[1], $Rec1[2]);
Add A Print Statementecho "<pre><p>";/*=============================================================== Loop Through Records In Record Set ================================================================*/
$query1 = "SELECT COUNT(*) AS NoStudents FROM Student";$recSet1 = $con->query($query1);$Rec = $recSet1->fetch_row();
63
echo "<pre><p>";
print "No Students = " . $Rec[0] . "<p><hr>";
/*=============================================================== Loop Through Records In Record Set ================================================================*/
$query1 = "SELECT COUNT(*) AS NoStudents FROM Student";$recSet1 = $con->query($query1);$Rec = $recSet1->fetch_row();
One Connection - Multiple Queries!
64
WWW GUI
Can Help You Provide
Nicely Formatted Output
65
Flyspeed Query
66
Results Of Query
67
We Would Like To Do On A Nicely
Formatted Web Page!
Goal!
68
Inside Folder C:\inetpub\wwwroot\PHP
Create Folder
Stanford-Student-Apply
69
Inside Folder Stanford-Student-Apply
Use Expression Web To Create Stanford-
Student-Apply.php
70
Link The New Page
71
Configure Your Page Properties
72
Configure Your Page Properties
73
Configure Your Page Properties
74
Create The Following With Arial FontUse Your Name
75
Move Your Cursor Below The Horizontal
Rule:
Insert A New Table On Your Page
76
Configure Your Table As Shown Below
77
You Should Now Have The Start Of Your
Table
78
Add The The Following Titles To The First
Row Use Arial Font
79
Select All Of The Cells In Row 1
Right-Mouse Click On One
Select Cell Properties
80
Configure The Cells:
81
Dark Blue
Change The Font Color In The First Row To
White
82
Insert XX Into Each Cell In Row 2
83
Select All The Cells In Row 2 &
Configure As Shown Below
84
Dark Blue
Add The Connection Before The Table
85
Add Your Query
86
Add The Connection Before The Table
87
We Need To Cycle Through Our Records
Each Cycke Will Create One Of These Rows
88
Add Your Loop
89
Making Progress
90
Finish It Up!
91
Making Progress
92Numerical Values Should Be Right Justified
Right-Justify All Three Numeric Fields
93Numerical Values Should Be Right Justified
Center 1 Character Fields
94
Nice Format Easier With GUI
95
Don't Forget To Include A Return On All Pages
96
97
Database Systems
CSCI 3343
Dr. Thomas E. HicksComputer Science Department
Trinity University