php and sql server: connection ist2101. typical web application interaction (php, jsp…) database...

22
PHP and SQL Server: Connection IST210 1

Upload: alyson-logan

Post on 18-Jan-2016

242 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 1

PHP and SQL Server: Connection

Page 2: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 2

Typical web application interaction

(php, jsp…)

database drivers

Page 3: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 3

When you query a database…

Step2. Select the database

Step1. Connect to the MS SQL serverServer Name: upsqlAuthentication: SQL Server Authentication

Step3. Input a query and execute it to get result

Step4. When you are done, close the application

Page 4: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 4

Let PHP do it for you…

Basic Steps for PHP Database Access:1. Connect to the MS SQL server and access the

database– connect

2. Perform SQL operations– Query– Get the results and update on the webpage– Most of the work are in this step

3. Disconnect from the server– close

Page 5: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 5

Example

• http://my.up.ist.psu.edu/zuz22/query.php

Page 6: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 6

Try it yourself

1. Download query.php from the course website and save it to your IST webspace

2. Open query.php using Notepad++ and modify the database information (important!)

3. Visit the PHP page and query the database:– http://my.up.ist.psu.edu/YourPSUID/query.php

Page 7: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 7

Modify the Database Information

Input your own information

Page 8: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 8

Connect to the Server

Attention: you may not have PROJECT table in your database! Check out what tables you have!

Go to MS SQL Management Studio Go to your database (your PSUID)Go to TablesIf you do not have any table in your database, download the scripts “SQL-Create-Tables.sql” and “SQL-Insert-Data.sql” from course website (week4-2) to create tables

Visit http://my.up.ist.psu.edu/YourPSUID/query.php

Page 9: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 9

HTML Form and PHPGet the table name from HTML form

In PHP, fetch the table name from $_POST

Page 10: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 10

Step 1. Open a DB Connection

• Open a connection to a database server– MS SQL Server:

• $connection = sqlsrv_connect( $hostName, $connectionInfo )

• More spec: http://php.net/manual/en/function.sqlsrv-connect.php

• The sqlsrv_connect function returns a resource handle $connection if it connects to the database successfully

Page 11: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 11

$hostname

‘UID’‘PWD’

Same parameters when you try to log in SQL server using MS Management Studio:

‘Database’

Page 12: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 12

Step 2-1. Use SQL to Query your DB

• Run a query with PHP – MS SQL Server:

• $query_result = sqlsrv_query($connection, $query);– It returns a result handle $query_result – We need the result handle ($query_result) to

fetch result data

Page 13: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 13

If input table is “project”, the generated query is “SELECT * FROM project”

Execute the SQL command “SELECT * FROM project”

Same as you execute SQL in Management studio:

Page 14: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 14

Step 2-2. Fetch query results

• Fetch the fields in the results – MS SQL Server:

• $fieldMetadata = sqlsrv_field_metadata($query_result);• $fieldname= $fieldMetadata['Name'];

– More spec:• http://php.net/manual/en/function.sqlsrv-field-metadata.php

• Get the data from each row – MS SQL Server:

• $line = sqlsrv_fetch_array($query_result, SQLSRV_FETCH_ASSOC)• The row ($line) is returned as an array.

– More spec:• http://php.net/manual/en/function.sqlsrv-fetch-array.php

Page 15: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 15Result in management studio Result shown on webpage (in table)

Put the result in the table

Fetching all the fields and print the field names

The header is the field

Fetching each row of the result

Fetching each column of that row$line is an array, $cell is an element in the arrayRefer to previous lectures for array, loop, and table

Page 16: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 16

Step 2-other. Other queries for your DB

• You can also insert/update/delete records– MS SQL Example

$query=“INSERT INTO USERS (UserID, UserName) VALUES(1, \‘Leon\’)” $query_result = sqlsrv_query($connection, $query)

• You can even create/delete/alter db objects– MS SQL Example

$query=“DROP TABLE USERS” $query_result = sqlsrv_query($connection, $query)

Page 17: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 17

Step 3. Close a DB connection

• You should close a DB connection to release resources– MS SQL Server:

• sqlsrv_close($connection);

Page 18: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 18

Error Handling

• All php DB functions return NULL (or false) if they fail– The database server is not running– Insufficient privileges to access the data source– Invalid username and/or password

• Several functions are helpful in graceful failure– die(string) - halts and displays the string– sqlsrv_errors() - returns text of error

Page 19: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 19

Error Handling examplesMethod One:

if (!($connection = sqlsrv_connect( $hostName, $connectionInfo )))

die("ERROR: connecting database server failed ");

Method two:

$connection = sqlsrv_connect( $hostName, $connectionInfo ) or die("ERROR: connecting database server failed");

Page 20: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 20

Other PHP MSSQL Classes

• http://php.net/manual/en/book.sqlsrv.php– Functions: allowing plugging-in variables

Page 21: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

In-Class Exercise• Modify query.php, allowing to specify attributes

– If no input for attributes, show the table– If some input for attributes, show the selected columns– Example: http://my.up.ist.psu.edu/zuz22/query-attr.php

Page 22: PHP and SQL Server: Connection IST2101. Typical web application interaction (php, jsp…) database drivers 2IST210

IST210 22

Hints

You need to modify these two parts

Now, you need to query given attributes not the whole table. What query you should generate?Also, when there is no input for attributes, you need to show all the results. So think about using if…else… statement

You need to have a new input for attribute names