0% found this document useful (0 votes)
3 views

07_PHP_Lecture

Uploaded by

Sardarwali Samim
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

07_PHP_Lecture

Uploaded by

Sardarwali Samim
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 60

Objectives

In this chapter, you will:

• Connect to MySQL from PHP

• Work with MySQL databases using PHP

• Create, modify, and delete MySQL tables with


PHP

• Use PHP to manipulate MySQL records

• Use PHP to retrieve database records

2
Connecting to MySQL with PHP
• PHP has the ability to access and manipulate
any database that is ODBC compliant

• PHP includes functionality that allows you to


work directly with different types of databases,
without going through ODBC

• PHP supports SQLite, database abstraction


layer functions, and PEAR DB
3
Determining which MySQL
Package to Use
• The mysqli (MySQL Improved) package became
available with PHP 5 and is designed to work with
MySQL version 4.1.3 and later
• Earlier versions must use the mysql package

• The mysqli package is the object-oriented


equivalent of the mysql package but can also be
used procedurally
• Mysqli package has improved speed, security and
compatibility with libraries. 4
Opening and Closing a MySQL
Connection
• Open a connection to a MySQL database server
with the mysql_connect() function

• The mysql_connect() function returns a positive


integer if it connects to the database successfully or
FALSE if it does not
• Assign the return value from the
mysql_connect() function to a variable that you
can use to access the database in your script
5
Opening and Closing a MySQL
Connection (continued)
• The syntax for the mysql_connect()
function is:
$connection = mysql_connect("host" [,
"user", "password"]);

• The host argument specifies the host name


where your MySQL database server is installed

• The user and password arguments specify a


MySQL account name and password
6
Opening and Closing a MySQL
Connection (continued)
• The database connection is assigned to the
$DBConnect variable

$DBConnect = mysql_connect("localhost",
“root", “myPassword");

• Close a database connection using the


mysql_close() function

mysql_close($DBConnect);
7
Opening and Closing a MySQL
Connection (continued)

8
Opening and Closing a MySQL
Connection (continued)

9
Reporting MySQL Errors

• Reasons for not connecting to a database server


include:
– The database server is not running

– Insufficient privileges to access the data source

– Invalid username and/or password

10
Reporting MySQL Errors
(continued)
• The mysql_errno() function returns the error
code from the last attempted MySQL function call
or 0 if no error occurred

• The mysql_error() — Returns the text of the


error message from previous MySQL operation
• The mysql_errno() and mysql_error()
functions return the results of the previous
mysql*() function
11
Selecting a Database
• The syntax for the mysql_select_db()
function is:
mysql_select_db(database [,
connection]);
• The function returns a value of TRUE if it
successfully selects a database or FALSE if it
does not
• For security purposes, you may choose to use
an include file to connect to the MySQL server
and select a database
12
Sample Code
good $link = mysql_connect(“localhost", “root", “passwd");

bad mysql_select_db("nonexistentdb", $link);


echo mysql_errno($link) . ": " . mysql_error($link). "\n";

good mysql_select_db(“myDatabase", $link);


bad mysql_query("SELECT * FROM nonexistenttable", $link);
echo mysql_errno($link) . ": " . mysql_error($link) . "\n";

13
Sample Code
$host = 'localhost';
$userName = 'root';
$password = '*****';
$database = 'myDatabase';

$link = mysql_connect ($host, $userName, $password );

if (!$link) {
die('Could not connect: ' . mysql_error());
}

echo 'Connected successfully';

mysql_close($link);
14
Sample Code
<?php
$link = mysql_connect('localhost', root', 'mysql_password');

if (!$link) {
die('Not connected : ' . mysql_error());
}
// make foo the current db
$db_selected = mysql_select_db(my_database', $link);

if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
?>
15
Suppressing Errors with the Error
Control Operator
• By default, functions in the mysql package
display errors and warnings as they occur

• Use the error control operator (@) to suppress


error messages

• The error control operator can be prepended to


any expression although it is commonly used
with expressions
16
Executing SQL Statements
• Use the mysql_query() function to send
SQL statements to MySQL
• The syntax for the mysql_query() function
is:
mysql_query(query [, connection]);
• The mysql_query() function returns one
of three values:
– For SQL statements that do not return results
(CREATE DATABASE and CREATE TABLE
statements) it returns a value of TRUE if the
statement executes successfully
17
Executing SQL Statements
(continued)
• For SQL statements that return results (SELECT
and SHOW statements) the mysql_query()
function returns a result pointer that represents the
query results
– A result pointer is a special type of variable that
refers to the currently selected row in a resultset

• The mysql_query() function returns a value of


FALSE for any SQL statements that fail, regardless
of whether they return results
18
Sample Code
<?php
// This could be supplied by a user, for example
$firstname = 'fred';
$lastname = 'fox';

//never trust user data


$firstname= mysql_real_escape_string($firstname);
$lastname= mysql_real_escape_string($lastname);

// Formulate Query
// For more examples, see mysql_real_escape_string()
$query = "SELECT firstname, lastname, address, age FROM friends WHERE firstname=‘$firstname ‘ AND lastname= ‘$lastname’”;

// Perform Query
$result = mysql_query($query);

// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}

// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the mysql result functions must be used
// See also mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}

// Free the resources associated with the result set


// This is done automatically at the end of the script
mysql_free_result($result);
?>
19
Adding, Deleting, and Updating
Records
• To add records to a table, use the INSERT
and VALUES keywords with the
mysql_query() function
• To add multiple records to a database, use
the LOAD DATA statement with the name of
the local text file containing the records you
want to add
• To update records in a table, use the UPDATE
statement
20
Adding, Deleting, and Updating
Records
<?php

$con = mysql_connect("localhost",“root",“my_password");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Peter', 'Griffin', '35')");
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Glenn', 'Quagmire', '33')");
mysql_close($con);

?>
21
Adding, Deleting, and Updating
Records (continued)
• The UPDATE keyword specifies the name of
the table to update
• The SET keyword specifies the value to
assign to the fields in the records that match
the condition in the WHERE clause
• To delete records in a table, use the DELETE
statement with the mysql_query() function
• Omit the WHERE clause to delete all records in
a table
22
Adding, Deleting, and Updating
Records
<?php

$con = mysql_connect("localhost",“root",“my_password");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
mysql_query("UPDATE Persons SET Age = '36'
WHERE FirstName = 'Peter' AND LastName = 'Griffin'");
mysql_close($con);

?>
23
Retrieving Records into an
Indexed Array
• The mysql_fetch_row() function returns
the fields in the current row of a resultset 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); 24
Sample Code
<?php ng";
exit;
$conn = mysql_connect("localhost", "mysql_user", }
"mysql_password");
// While a row of data exists, put that row in $row a
if (!$conn) { s an associative array
echo "Unable to connect to DB: " . mysql_error(); // Note: If you're expecting just one row, no need to
exit; use a loop
} // Note: If you put extract($row); inside the following
loop, you'll
if (!mysql_select_db("mydbname")) { // then create $userid, $fullname, and $userstat
echo "Unable to select mydbname: " . mysql_err us
or(); while ($row = mysql_fetch_assoc($result)) {
exit; echo $row["userid"];
} echo $row["fullname"];
echo $row["userstatus"];
$sql = "SELECT id as userid, fullname, userstatus }
FROM sometable
WHERE userstatus = 1"; mysql_free_result($result);
$result = mysql_query($sql); ?>
if (!$result) {
echo "Could not successfully run query ($sql) fro
m DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiti 25
Using the mysql_affected_rows()
Function
• With queries that return results (SELECT queries),
use the mysql_num_rows() function to find the
number of records returned from the query

• With queries that modify tables but do not return


results (INSERT, UPDATE, and DELETE queries),
use the mysql_affected_rows() function to
determine the number of affected rows
26
Using the mysql_affected_rows()
Function (continued)
$SQLstring = "UPDATE company_cars SET mileage=50112.3
WHERE license='AK-1234'";
$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>";

27
Using the mysql_affected_rows()
Function (continued)

28
Using the mysql_info() Function
• For queries that add or update records, or alter
a table’s structure, use the mysql_info()
function to return information about the query
• The mysql_info() function returns the
number of operations for various types of
actions, depending on the type of query
• The mysql_info() function returns information
about the last query that was executed on the
database connection

29
Using the mysql_info() Function
(continued)
• The mysql_info() function returns information
about queries that match one of the following
formats:
– INSERT INTO...SELECT...
– INSERT INTO...VALUES (...),(...),(...)
– LOAD DATA INFILE ...
– ALTER TABLE ...
– UPDATE
• For any queries that do not match one of these
formats, the mysql_info() function returns an
empty string
30
Using the mysql_info() Function
(continued)
$SQLstring = "INSERT INTO company_cars " .
" (license, model_year, make, model, mileage) " .
" VALUES " .
" ('CPQ-894', 2011, 'Honda', 'Insight', 49.2), " .
" ('CPQ-895', 2011, 'Honda', 'Insight', 17.9), " .
" ('CPQ-896', 2011, 'Honda', 'Insight', 22.6)";
$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 added the record.</p>";
echo "<p>" . mysql_info($DBConnect) . "</p>";
}
31
Using the mysql_info() Function
(continued)

32
Using the mysql_info() Function
(continued)
• The mysql_info() function also returns
information for LOAD DATA queries
$SQLstring = "LOAD DATA INFILE 'company_cars.txt'
INTO TABLE company_cars;";
$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 added the record.</p>";
echo "<p>" . mysql_info($DBConnect) . "</p>";
}
33
Using the mysql_info() Function
(continued)

34
Working with Query Results

35
Retrieving Records into an Indexed
Array
• The mysql_fetch_row() function returns the
fields in the current row of a result set into an
indexed array and moves the result pointer to
the next row

36
Retrieving Records into an Indexed
Array
$SQLstring = "SELECT * FROM company_cars";
$QueryResult = @mysql_query($SQLstring, $DBConnect);
echo "<table width='100%' border='1'>\n";
echo "<tr><th>License</th><th>Make</th><th>Model</th>
<th>Mileage</th><th>Year</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>";
echo "<td>{$Row[4]}</td></tr>\n";
}
echo "</table>\n";

37
Retrieving Records into an Indexed
Array

38
Retrieving Records into an
Associative Array
• The mysql_fetch_assoc() function returns the
fields in the current row of a resultset into an
associative array and moves the result pointer to the
next row

• The difference between mysql_fetch_assoc()


and mysql_fetch_row() is that instead of
returning the fields into an indexed array, the
mysql_fetch_assoc() function returns the fields
into an associate array and uses each field name as
the array key
39
Closing Query Results
• When you are finished working with query results
retrieved with the mysql_query() function, use
the mysql_free_result() function to close the
resultset

• To close the resultset, pass to the


mysql_free_result() function the
variable containing the result pointer from the
mysql_query() function
40
Accessing Query Result
Information
• The mysql_num_rows() function returns the
number of rows in a query result

• The mysql_num_fields() function returns the


number of fields in a query result

• Both functions accept a database connection


variable as an argument

41
Accessing Query Result Information (continued)

$SQLstring = "SELECT * FROM company_cars";


$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 executed the query.</p>";
$NumRows = mysql_num_rows($QueryResult);
$NumFields = mysql_num_fields($QueryResult);
if ($NumRows != 0 && $NumFields != 0)
echo "<p>Your query returned " .
mysql_num_rows($QueryResult) . " rows and "
. mysql_num_fields($QueryResult) . " fields.</p>";
else
echo "<p>Your query returned no results.</p>";
mysql_close($DBConnect);

42
Accessing Query Result
Information (continued)

43
Summary

• The mysql_connect() function opens a


connection to a MySQL database server

• The mysql_close() function closes a


database connection

• The mysql_errno() function returns the error


code from the last attempted MySQL function
call or zero if no error occurred
44
Summary (continued)
• The mysql_error() function returns the error
message from the last attempted MySQL
function call or an empty string if no error
occurred
• The error control operator (@) suppresses
error messages
• You use the mysql_create_db() function to
create a new database
• The mysql_select_db() function selects a
database
45
Summary (continued)
• 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 46
Summary (continued)
• The PRIMARY KEY clause indicates a field or
fields that will be used as a referential index for
the table
• The AUTO_INCREMENT clause creates a field
that is automatically updated with the next
sequential value for that column
• The NOT NULL clause creates a field that must
contain data
• You use the DROP TABLE statement with the
mysql_query() function to delete a table
47
Summary (continued)
• You use the LOAD DATA statement and the
mysql_query() function with a local text file to
add multiple records to a database – MAY NOT
WORK ON PARADOX
• You use the UPDATE statement with the
mysql_query() function to update records in a
table
• You use the DELETE statement with the
mysql_query() function to delete records from a
table
48
Summary (continued)

• The mysql_info() function returns the number


of operations for various types of actions,
depending on the type of query.

• The mysql_fetch_row() function returns the


fields in the current row of a resultset into an
indexed array and moves the result pointer to the
next row.
49
Summary (continued)

• The mysql_fetch_assoc() function returns


the fields in the current row of a resultset into an
associative array and moves the result pointer to
the next row

• The mysql_free_result() function closes a


resultset

50
Summary (continued)

• The mysql_num_rows() function 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 51
Creating and Deleting Tables

• Use the CREATE TABLE statement with the


mysql_query() function to create a new table

• Use the mysql_select_db() function before


executing the CREATE TABLE statement to
verify that you are in the right database

52
Creating and Deleting Tables
(continued)
$SQLstring = "CREATE TABLE drivers (name VARCHAR(100), "
. "emp_no SMALLINT, hire_date DATE, "
. "stop_date DATE)";
$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 created the table.</p>";

53
Creating and Deleting Tables
(continued)

54
Creating and Deleting Tables
(continued)
• Use the SHOW TABLES LIKE command to
prevent code from trying to create a table that
already exists.
• If the table does not exist, the
mysql_num_rows()function will return a value
of 0 rows
$TableName = "subscribers";
$SQLstring = "SHOW TABLES LIKE '$TableName'";
$QueryResult = @mysql_query($SQLstring,
$DBConnect);

55
Creating and Deleting Tables
(continued)
• To identify a field as a primary key in MySQL,
include the PRIMARY KEY keywords when you
define a field with the CREATE TABLE
statement
• The AUTO_INCREMENT keyword is often used
with a primary key to generate a unique ID for
each new row in a table
• The NOT NULL keywords are often used with
primary keys to require that a field include a
value
56
Creating and Deleting Tables
(continued)

• To delete a table, use the DROP TABLE


statement with the mysql_query()
function

57
Creating a Database
• Use the mysql_create_db() function to create a
new database

• The basic syntax for the mysql_create_db() is:

$result = mysql_create_db( "dbname" [, connection]);

• The mysql_create_db() returns a Boolean TRUE


if successful or FALSE if there was an error

• In most cases we will use mysql monitor,


PhpMyAdmin or Workbench to create databases. 58
Creating a Database (continued)

59
Deleting a Database
• To delete a database, use the
mysql_drop_db() function.
• The format for the mysql_drop_db() function
is:
$Result = mysql_drop_db("dbname" [,
connection]);
• The function returns a value of TRUE if it
successfully drops a database or FALSE if it
does not

60

You might also like