PHP+MySQL Integration
Connecting to databases One of the most common tasks when working with dynamic webpages is connecting to a database which holds the content of the page PHP has several libraries that allows for communication with many different databases Some of these libraries have variations in the commands We will be using the mysql library Most functions start with mysql_ and then the name of the function 2
Working with databases –key steps 1.Design the DB – Create the DB on PHPMyAdmin or MySQL command 2.Design and create the HTML 3.Create a connection and select the database 4.Run the query – Verify Insert/Fetch the rows/Do other SQL associated tasks 5.Display Results as needed 6.Close the connection 3
1. Database Design and Creation Create database ‘hospital’, add a table ‘discharge’ with appropriate fields – patient id, name, appointment type, admission ward, xray examination, mri scan, cat scan, eye test, hearing test, and date (to capture todays date) hospital discharge (patid,name, appointment, ward, xray, mri, cscan, eye, hearing, date)
Data details FieldTypeComment patidint(11) NN AI PKPrimary Key Index namevarchar(45)Patient Full Name appointmentvarchar(11)type of appointment: GP, Specialist or Surgery wardchar(2)Admitted to ward? No, or ward A,B or C xraychar(3)x-rays taken? YES,NO mrichar(3)mri carried out? YES,NO cscanchar(3)CAT scan carried out? YES,NO eyechar(3)eye test carried out? YES,NO hearingchar(3)hearing test carried out? YES,NO date date of discharge: format YYYY-MM-DD as text
2. Design and Create the HTML In order to interact with the database we need a data capture form, and a script that will process the form. Create an HTML document in the folder you created in C:\wamp\www, and save it as hospital.html
hospital.html Patient name: Appointment type: GP Specialist Surgery Admission to these Wards: No Ward Ward A Ward B Ward C Treatments Undertaken: X-Ray Treatment MRI Scan CAT Scan Eye Test Hearing Test
Form link to php script file use get to check form is working correctly post could also be used, user choice form name
Drop down list Patient Name: Appointment type General Practicioner Specialist Surgery 3 options for appointment type
Radio buttons Admission to Wards: No Ward Ward A Ward B Ward C 4 options via radio buttons, only one can be selected on form
Checkboxes Treatments Undertaken: X-Ray Treatment MRI Scan CAT Scan Eye Test Hearing Test 5 options, any can be selected on form
Submit/reset buttons
process.php <?php $name = $_GET['name']; $app = $_GET['appointment']; $ward = $_GET['ward']; $variable single option data passing $_POST option also viable, keep consistent with previous use Open a new file, save as process.php, keep on same directory as html file Arguments are passed as below:
Checkbox data selection if (isset($_GET['xray'])) { $xray = $_GET['xray']; } else { $xray = "No"; } Note: This code needs to be repeated for every checkbox variable passed as a parameter the variables used are: $mri, $cscan, $eye, $hearing checkboxes allow multiple options if not checked, it will not pass the parameter (not set) if passed the default is set to ‘yes’ so if not passed, we need to assign a value to the respective variable that will go into the database
Check data capture print "Name:".$name." "; print "Appointment:".$app." "; print "Ward:".$ward." "; print "X-Ray:".$xray." "; print "MRI:".$mri." "; print "CSCAN:".$cscan." "; print "EYE:".$eye." "; print "HEARING:".$hearing." "; print used to check fields are being passed and captured in the page
3. Database connection You will need: – The address to the database server – A username with privileges to access the table you require – The username associated password Optionally: – The name of the database you are connecting to 16
Connection Sequence mysql_connect(host, username, password) – returns a link to the host using username and password authentication. Usage: – $conn=mysql_connect(‘localhost’,myusername’,’MyP455w0rd’); mysql_select_db(database,link) – selects a database from the connection in link Usage: – mysql_select_db(‘db_name’,$conn); 17
Opening a connection $link = mysql_connect('localhost','student','student') or die(mysql_error()); mysql_select_db('hospital',$link);
Current date selection $querydate = "SELECT CURDATE() as Today"; $result1 = mysql_query($querydate,$link) or die(mysql_error()); $row = mysql_fetch_assoc($result1); $today = $row['Today']; This script demonstrates how the current date can be obtained from the MySQL server using the appropriate DATE query The parameter being queried (date) does not have an index in the array, so we need to use the alias “AS” to assign an index that we can use to retrieve from the result array
4. Run the query mysql_query(link, query) is used to run a query on the database server. It requires the link and the query string and returns a result object. Usage: $result= mysql_query(“SELECT * from directory”, $conn); Queries can be constructed as strings. The string variable can then be used on the mysql_query command. Usage: $query="select * from directory"; $result = mysql_query($query,$link) or die("could not execute:".mysql_error());
Insert query $query = "INSERT INTO discharge VALUES (NULL,'$name','$app','$ward','$xray','$mri','$cscan','$eye','$hearing','$today')"; $result = mysql_query($query,$link) or die(mysql_error()); $affected = mysql_affected_rows($link); if ($affected >0) {echo "success";} else {echo "fail";} detects affected rows in the query in this case 1 row was INSERTED so $affected=1 if the insert was successful generates mysql error causes Query to insert all data from html form + date obtained from previous query Specify discharge table
Select query $query3 = "SELECT * FROM discharge"; $result3 = mysql_query($query3,$link) or die(mysql_error()); $row3 = mysql_fetch_assoc($result3); ?> This query will retrieve all the data from the table discharge
5. Display results Result sets are objects. They point to places in memory where the values returned from the query exist Result sets are NOT the individual rows from the query You can think of a result set as the TABLE that holds the results You need to read the rows from that table individually $row=mysql_fetch_array($result); Using this function, the array returned can be either numerically indexed or associative! If there are no more rows, the function returns FALSE
Table headings Patient ID Patient Name Appointment Type Admitted to Ward X-Ray MRI Cat Scan Eye Test Hearing Test Date Discharged
Results $row is an associative array containing the results, the index of the array is the field in the database
do …. while loop DO-WHILE Loop needed to display all the results of the database
Keeping it tidy Once you have completed your work with the database, there are two things you should do: – Free the results – Close the connection to the server. Freeing the results can be optional: On closing the connection, the results are automatically freed If you are planning to run further queries on the same connection, it is good practice to free the previous result set. – mysql_free_result($result); To close the connection you use – mysql_close($conn); 27
6. Close connection <?php mysql_close($link); ?>
Places where things can go wrong Creating a connection – Server unreachable/offline – Wrong username/password combination Selecting the table – Table does not exist – User without privileges for that table Running the query – Syntax errors – Empty result set Fetching results – Misusing the array 29