Presentation is loading. Please wait.

Presentation is loading. Please wait.

IS2803 Developing Multimedia Applications for Business (Part 2) Lecture 6: Accessing a database with PHP Rob Gleasure robgleasure.com.

Similar presentations


Presentation on theme: "IS2803 Developing Multimedia Applications for Business (Part 2) Lecture 6: Accessing a database with PHP Rob Gleasure robgleasure.com."— Presentation transcript:

1 IS2803 Developing Multimedia Applications for Business (Part 2) Lecture 6: Accessing a database with PHP Rob Gleasure R.Gleasure@ucc.ie robgleasure.com

2 IS2803 Today's lecture  Accessing a database with PHP  An example

3 Accessing Databases with SQL As we saw in lecture 4, accessing files in PHP requires a number of steps and databases are no different. These steps (roughly) are:  Open a connection with the file  Read data from the file into a file handle variable  Manipulate the contents of the file (optional)  Close the connection

4 Accessing Databases with SQL Imagine the following database table leaders in politicians.accdb IDFirstnameSurname 1EndaKenny 2EamonGilmore 3MichealMartin 4GerryAdams

5 Accessing Databases with SQL To connect to MS Access we use the COM() function  This function creates an instance of the ActiveX Data Object (ADO), which is part of the component object model (COM) object for accessing databases and other similar data sources <?php //create an instance of the ADO connection object $conn = new COM('ADODB.Connection') or die('Cannot start ADO'); ?> Note that, just as when we were opening files in lecture 4, we are saving the connection details in a file handle (In this case ‘$conn’)

6 Accessing Databases with SQL Next we create a connection string to hold the database driver details and the absolute URL of the database //in this example the URL for our database is ‘C:/myFolder/politicians.accdb’ $connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:/ myFolder/politicians.accdb;Persist Security Info=False;"; Note that if we’re using the old MS Access format (.mdb), our connection string will look a little different $connStr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:/xampp/htdocs/politicians.mdb"; However,.mdb issues shouldn't be a concern for us in this course

7 Reading from a database Next, we pass the connection string variable (in this case $connStr) to the open function //Open the connection to the database $conn->open($connStr); Again, note that we are saving all the connection details in the file handle ‘$conn’

8 Reading from a database Similar to the process for reading text files from lecture 4, we need to read the contents of a database into a variable When a variable is allocated the output from a SELECT query, this variable now stores what is called a ‘record set’ To run the SELECT query (or any other SQL queries) we call the ADO function ->execute() on the record set variable //Code to create a variable $rS to store a new record set from your table $rS = $conn->execute("SELECT * FROM leaders");

9 Reading from a database We can now pull information out of the record set variable using the ->Fields() function. $id= $rS->Fields(0); $firstname= $rS->Fields(1); $surname = $rS->Fields(2); Note that ->Fields() works on a single record in the Recordset object (i.e. one row in the table)

10 Reading from a database We spoke last week about pointers. ADO comes with a number of built-in functions (we have already seen open() and execute()) and a couple of these are especially important for moving a pointer (i.e. navigating) around a record set  MoveFirst (): moves to the first record in a Recordset object  MoveLast(): moves to the last record in a Recordset object  MoveNext(): moves to the next record in a Recordset object  MovePrevious(): moves to the previous record in a Recordset object Note: errors will be thrown if these functions are called and the pointer has nowhere to go, e.g. if database is empty or EOF has been reached

11 Reading from a database We can use these functions to iterate through the records stored in the record set while (!$rS->EOF) //while $rS is not at end of file { echo "First name is ".$rS->Fields(1)." "; // we then move to next record $rS->MoveNext(); }

12 Writing to a database Writing to a database is very similar, the difference is in our SQL statement //Code to execute sql statement to insert name John into leaders field FirstName $conn->execute("INSERT INTO leaders (FirstName) VALUES (6, 'Joan‘,’Collins’)"); Each time this statement runs, it will try to insert this data into a new row in the table

13 Closing the connection As with all files, when we’re finished we must ensure we close the connection. This closing requires two steps with databases //release memory from rS $rS->Close(); //release memory from conn $conn->Close();

14 An example Try out the following code Lecture 6 example <?php /**/ // create an instance of the ADO connection object $conn = new COM ("ADODB.Connection") or die("Cannot start ADO"); // define connection string, specify database driver $connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/xampp2/htdocs/IS2803.accdb;Persist Security Info=False;"; // open the connection to the database $conn->open($connStr); // create a variable to store a SQL query that selects every field where the Username is the same as $username $myQuery = "SELECT * FROM Politicians"; // create a variable $rS to store the new record returned when the SQL query is executed $rS = $conn->execute($myQuery); echo ' '; echo ' First name Surname '; echo ' '; while (!$rS->EOF){ // echo out the details from one record at a time echo ' '; echo ' '.$rS->Fields(1).' '.$rS->Fields(1).' '; echo ' '; // then move to next record $rS->MoveNext(); } echo ' '; $rS->close(); $conn->close(); ?>

15 Troubleshooting You may get an error that reads “Fatal error: Class 'COM' not found…” This occurs because a previously default driver isn’t default any more The solution is to open xampp/php/php.ini and add the following lines to the end [PHP_COM_DOTNET] extension=php_com_dotnet.dll

16 Want to read more? Links and references  W3Schools tutorial on PHP and MS Access http://www.w3schools.com/php/php_db_odbc.asp  Generic tutorial on PHP and SQL connections http://www.phpeveryday.com/articles/PHP-Mysql-Database- Tutorial-P843.html http://www.phpeveryday.com/articles/PHP-Mysql-Database- Tutorial-P843.html


Download ppt "IS2803 Developing Multimedia Applications for Business (Part 2) Lecture 6: Accessing a database with PHP Rob Gleasure robgleasure.com."

Similar presentations


Ads by Google