Why PHP?
• Open Source = FREE.
• Available on practically any platform.
• Very ubiquitous. Most web hosting services offer PHP.
(See LAMP software bundle on previous slide).
• Why some people hate it:
http://webonastick.com/php.html
• Why others are more upbeat:
http://net.tutsplus.com/articles/editorials/why-2013-is-the-year-of-php/
• Greatest Strength: Strong support for Open Database
Connectivity (ODBC). PHP can access and manipulate
any ODBC compliant database, including:
• MySQL, Oracle, MSSQLServer, MSAccess
• MongoDB, Cassandra
PHP Syntax and Operators
• Started as a "template" language for dynamic webpages.Now
mostly used as a server-side scripting language for web
development.
• Acts as a "filter":
• INPUT: text and/or PHP instructions from a file or data stream
• OUTPUT: another data stream (usually HTML, but can also be JSON or XML)
• Syntax is similar to C/C++/Java. OPERATORS:
•
•
•
•
•
•
•
Arithmetic
Comparison
Bitwise
Assignment
Execution
Array
Type
• Great reference material:
• http://www.php.net/
• http://www.w3schools.com/php/
Simple PHP Example
• A PHP scripting block is delineated by:
<?php
start tag
?>
end tag
• A PHP scripting block
• can be placed anywhere in the HTML document.
• Each code line must end with a semicolon.
• Two ways to output text:
• echo and print.
• All variables in start with a $ symbol.
• Comments: // or /* */
6
Multiple Code Declaration Blocks
PHP code declaration blocks execute on Web server
first before Web page is sent to client.
...
</head>
<body>
<h1>Multiple Script Sections</h1>
<h2>First Script Section</h2>
<p> Output from the first script section.</p>
<h2>Second Script Section</h2>
<p> Output from the second script section.</p>
</body>
</html>
7
Opening and Closing
MySQL Connection
/* The connection is stored in variable $DBConnect for later
use in the script */
<?php
// Create connection
$DBConnect =
mysql_connect(“www.psme.foothill.edu”,“1234532","abc123","my_
db");
// Check connection
if (mysql_connect_errno($DBConnect))
{
echo "Failed to connect to MySQL: " .mysql_connect_error();
}
?>
8
PHP and MySQL
• PRIMARY KEY clause indicates a field or fields that
will be used as a referential index for the table
• AUTO_INCREMENT clause creates a field that is
automatically updated with the next sequential value
for that column.
• NOT NULL clause creates a field that must contain
data.
• Use with the mysql_query() function
• DROP TABLE statement to delete a table
• UPDATE statement to update records
• DELETE statement to delete records
Adding, Deleting, Updating Records
// INSERT Example
// omit auto_increment field, put null to no data
field$SQLstring = "INSERT INTO $TableName " .
"(name, email, phone) " .
"VALUES ('Name2', 'name2@gmail.com', NULL)";
$QueryResult = mysql_query($SQLstring, $DBConnect);
// UPDATE Example
$SQLstring = "UPDATE customer SET name = 'Name_a', phone =
'510-112-3523' WHERE cust_id = 88 ";
$QueryResult = mysql_query($SQLstring, $DBConnect);
// DELETE Example
$SQLstring = "DELETE FROM $TableName WHERE cust_id = 88";
$QueryResult = mysql_query($SQLstring, $DBConnect);
PHP and MySQL
• mysql_connect() function opens a connection to a MySQL
database server
• The mysql_close() function closes a database connection
• You use the mysql_create_db() function to create a new
database
• The mysql_select_db() function selects a database
• You use the mysql_drop_db() function to delete a database
• The mysql_query() function sends SQL statements to MySQL
• A result pointer is a special type of variable that refers
to the currently selected row in a resultset
• You use the CREATE TABLE statement with the mysql_query()
function to create a table
Working with Query Results
• mysql_fetch_row() returns the fields in the current row of
a result set into an indexed array and moves the result
pointer to the next row.
• mysql_fetch_assoc() returns the fields in the current row
of a resultset into an associative array and moves the
result pointer to the next row
• mysql_free_result() closes a resultset
• mysql_num_rows() returns the number of rows in a query
result, and the mysql_num_fields() function returns the
number of fields in a query result
• With queries that return results, such as SELECT
queries, you can use the mysql_num_rows() function to
find the number of records returned from the query
Function: mysql_affected_rows()
$SQLstring = "UPDATE student SET id = 33213
WHERE name='Zhang'";
$QueryResult = @mysql_query($SQLstring, $DBConnect);
if ($QueryResult === FALSE)
echo "<p>Unable to execute the query.</p>"
. "<p>Error code " . mysql_errno($DBConnect)
. ": " . mysql_error($DBConnect) . "</p>";
else
echo "<p>Successfully updated "
. mysql_affected_rows($DBConnect) . "
record(s).</p>";
Indexed Arrays
Two ways to create indexed arrays (numeric keys).
1. Using the array() construct
$array_name = array(element0, element1, element2,
element3);
2. Using square brackets[]. The next consecutive index
number is assigned automatically. Default start is 0.
$array_name[]
$array_name[]
$array_name[]
$array_name[]
=
=
=
=
element0;
element1;
element2;
element3;
Example: $array_name[100] = "array100";
Iterating through an Array
This declares and initializes an indexed array named
$DaysOfWeek[] and uses a foreach statement to iterate
through it:
$DaysOfWeek = array("Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday");
foreach ($DaysOfWeek as $Day) {
echo "<p>$Day</p>n";
}
Retrieving Records
into an Indexed Array
mysql_fetch_row() returns the fields in the current row of
a result set into an indexed array and moves the result
pointer to the next row
echo "<table width='100%‘ border='1'>";
echo "<tr><th>Make</th><th>Model</th>
<th>Price</th><th>Quantity</th></tr>";
$Row = mysql_fetch_row($QueryResult);
do {
echo "<tr><td>{$Row[0]}</td>";
echo "<td>{$Row[1]}</td>";
echo "<td align='right'>{$Row[2]}</td>";
echo "<td align='right'>{$Row[3]}</td></tr>";
$Row = mysql_fetch_row($QueryResult);
} while ($Row);
Retrieving Records
into an Indexed Array (contd)
$SQLstring = "SELECT * FROM student";
$QueryResult = @mysql_query($SQLstring, $DBConnect);
echo "<table width='100%' border='1'>n";
echo "<tr><th>ID</th><th>NAME</th><th>DEPT_NAME</th>
<th>tot_cred</th>tr>n";
while (($Row = mysql_fetch_row($QueryResult)) !== FALSE) {
echo "<tr><td>{$Row[0]}</td>";
echo "<td>{$Row[1]}</td>";
echo "<td>{$Row[2]}</td>";
echo "<td align='right'>{$Row[3]}</td> ></tr>n ";
}
echo "</table>n";
Associative Arrays
Two ways to create associative arrays (keys are
alphanumeric names).
1. Using the array() construct
$array_name = array(key => value, key2 => value2, …);
2. Using square brackets[].
$array_name["key3"] = "value3";
$array_name["key4"] = "value4";
Example:
echo "<p> The value of key3 is
{$array_name['key3']}.</p>n";
Autoglobals
• Predefined global arrays which contain client, server, and
environment information that you can use in your scripts.
• Autoglobals are associative arrays that can only be referenced
using an alphanumeric key, not an index number.
$_COOKIE - values passed to the current script as HTTP cookies
$_ENV - environment information
$_FILES - information about uploaded files
$_GET - values from a form submitted with the “get” method
$_POST - values from a form submitted with the “post” method
$_REQUEST -
all the elements in the $_COOKIE, $_GET, and $_POST arrays
$_SERVER - information about the Web server that served the current script
$_SESSION - session variables that are available to the current script
$GLOBALS - References to all variables defined with global scope
Data Validation
Use Web form controls for validating input types (such as check
boxes, radio buttons, and selection lists) that limit user from
entering invalid data.
Useful Functions:
• NUMERIC DATA: (is_double(), is_float(), is_int(), is_integer(),
is_long(), is_null(), is_numeric(), is_object(), is_real(),
is_string()).
• STRING DATA:
• stripslashes() removes the leading slashes for escape
sequences in strings.
• trim() removes any leading or trailing white space from a
string.
Input Types
text
A single line text field
password
Same as text, but the input is not displayed
textarea
A multi-line text field
radio
Set of radio buttons; user can select only 1.
checkbox
Set of checkboxes; user can select 0 or more.
option/select Drop-down lists
Button
Button
img
Button with an image
file
File upload button
hidden
Static value.
21
Web Form Input Type="text"
<form action="display.php" method="get">
<label>name: </label>
<input type="text" name="name"/><br />
<label>Address: </label>
<input type="text" Address=“Address"/><br />
<label> </label>
<input type="submit" value="Submit"/>
</form>
// Get data and store into variables:
$name = $_GET['name'];
$Address = $_GET[‘Address'];
22
<!DOCTYPE html>
<html>
<head> <title>arrays2.php</title> </head>
<body>
<?php
echo "Method1: Loop Through an Indexed Array
<br>";
$DaysOfWeek = array("Sunday", "Monday",
"Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday");
foreach ($DaysOfWeek as $Day)
echo "$Day<br>";
echo "<br>Method2: Loop Through an Indexed
Array <br>";
$arrlength = count($DaysOfWeek);
for ($x = 0; $x < $arrlength; $x++) {
echo $DaysOfWeek[$x];
echo "<br>";
}
// Associative Array
$keys = array("key1" => "value1",
"value2", "kay3" => "value3");
echo "Loop Through an Associative
echo "<br>";
foreach ($keys as $x => $x_value)
echo "Key=" . $x . ", Value="
echo "<br>";
}
?>
</body>
</html>
"key2" =>
Array";
{
. $x_value;
OUTPUT:
Method1: Loop Through an Indexed Array
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Method2: Loop Through an Indexed Array
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Loop Through an Associative Array
Key=key1, Value=value1
Key=key2, Value=value2
Key=kay3, Value=value3
<!DOCTYPE html>
<html>
<head>
<title>MySQL Database - create table</title>
</head>
<body>
<h1>Creating table customercontact with test</h1>
<?php
$host="www.psme.foothill.edu";
$user = "10062690";
$password = "glennb00";
$DBName = "test";
OUTPUT:
$DBConnect = mysql_connect($host, $user, $password) or die(mysql_error());
if ($DBConnect === FALSE) {
echo "<p>The Database server is not available.</p>";
die("<p>MySQL_error: " . mysql_error() . "<br />MySQL_errno: " . mysql_errno() . "</p>");
}
else {
echo "<p>The Database server is running.</p>";
$DBSelect = mysql_select_db($DBName, $DBConnect);
if ($DBSelect === FALSE) {
echo "<p>Could not Select the "$DBName" database: "
. "<br />MySQL_error: " . mysql_error($DBConnect) . "<br />MySQL_errno: " .
mysql_errno($DBConnect) . "</p>";
} else {
echo "<p>Database $DBName successfully selected</p>";
$TableName = "customercontact";
$SQLstring = "SHOW TABLES LIKE '$TableName'";
$Result = mysql_query($SQLstring, $DBConnect);
if (mysql_num_rows($Result) > 0) {
echo "<p>The $TableName table already exists!</p>";
} else {
$SQLstring = "CREATE TABLE customercontact (cust_id INT NOT NULL PRIMARY KEY, "
. "fname varchar(20), lname varchar(20), email varchar(20), phone
varchar(20))";
$Result = mysql_query($SQLstring, $DBConnect);
if ($Result === FALSE) {
echo "<p>Unable to execute the query. "
. "<br />MySQL_error: " . mysql_error($DBConnect)
. "<br />MySQL_errno: " .
mysql_errno($DBConnect) . "</p>";
}
else {
echo "<p>Successfully created the table. </p>";
}}}}
mysql_close($DBConnect);
?>
</body>
</html>
•
Creating table
customerconta
ct with test
•
The Database
server is
running.
•
Database test
successfully
selected
•
The
customercontac
t table already
exists!