PHP and SQL Server: Connection IST2101
Typical web application interaction (php, jsp…) database drivers 2IST210
When you query a database… IST2103 Step2. Select the database Step1. Connect to the MS SQL server Server Name: upsql Authentication: SQL Server Authentication Step3. Input a query and execute it to get result Step4. When you are done, close the application
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 4IST210
Example IST2105
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: – IST2106
Modify the Database Information IST2107 Input your own information
Connect to the Server IST2108 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 Tables If 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
HTML Form and PHP IST2109 Get the table name from HTML form In PHP, fetch the table name from $_POST
Step 1. Open a DB Connection Open a connection to a database server – MS SQL Server: $connection = sqlsrv_connect( $hostName, $connectionInfo ) More spec: connect.php connect.php The sqlsrv_connect function returns a resource handle $connection if it connects to the database successfully 10IST210
11 $hostname ‘UID’ ‘PWD’ Same parameters when you try to log in SQL server using MS Management Studio: ‘Database’
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 12IST210
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:
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: 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: 14IST210
15 Result 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 array Refer to previous lectures for array, loop, and table
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) 16IST210
Step 3. Close a DB connection You should close a DB connection to release resources – MS SQL Server: sqlsrv_close($connection); 17IST210
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 18IST210
Error Handling examples Method 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"); 19IST210
Other PHP MSSQL Classes – Functions: allowing plugging-in variables 20IST210
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:
Hints IST21022 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