0% found this document useful (0 votes)
12 views60 pages

07_PHP_Lecture

Uploaded by

Sardarwali Samim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views60 pages

07_PHP_Lecture

Uploaded by

Sardarwali Samim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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