Date post: | 17-May-2015 |
Category: |
Documents |
Upload: | webhostingguy |
View: | 4,348 times |
Download: | 0 times |
PHP and MySQL
PHP• Creates DYNAMIC web pages
– HTML traditionally static – Contents regenerated every time visit or reload site
• (e.g. can include current time)
• PHP is a scripting language– Interpreted, not converted to binary executable files– (Dialogue for play interpreted by actors)– Strong at communicating with program components written in
other languages• E.g. can embed PHP statements within HTML
PHP
• Written as a set of CGI binaries in C in 1994 by R. Lerdorf– Created to display resume and collect data about
page traffic, e.g. dynamic web pages– Personal Home Page tools publicly released 1995– In 1998 became PHP: Hypertext Preprocessor
• PHP parser with web server and web browser, model similar to MS ASP.NET, Sun JavaServer Pages
PHP
• Used mainly in server-side scripting– Can be used from command line interface– Standalone graphical applications
• Takes input from a file or stream containing text and PHP instructions
• Outputs stream of data for display• PHP 4 – parser compiles input to produce bytecode – Zend engine
(better performance than interpreted PHP 3)• PHP 5 – robust support for OO programming, better support for
MySQL, support for SQLite, performance enhancements
PHP - specifics
• Delimiters: <?php ?> or just <? ?>• PHP parses code within delimiters• Code outside delimiter sent to output, not parsed• Block comments /* */ • Inline comments // #
PHP vs. C++
• Similarities:– Compiled Language– Syntax nearly the same (For/While/If) – Requires semicolons after each statement ;– Assignment is right to left ($num = 56;)– Object-Oriented (Class support, inheritance, virtuals,
polymorphism)– Functions!– Types are nearly the same (booleans, integers,
strings, etc.)
PHP Versus C++
• Differences:– Variables begin with $ sign ($name = “John Doe”;)– No explicit declaration of variable types – Introduction of “lazy” functions (foreach, explode,
mail)– No Function Overloading– “Hidden” functions-within-a-function– Compiled/interpreted during every page load– Documented! – Echo for output
PHP Versus C++
• Web Specific:– Cookies and “Sessions”– Dynamic HTML based on user-defined logic– Interact and process a form’s action– Process URL Parameters – Easy Database Integration – Cross-Site-Scripting (XSS) security hacks -
taken care of by PHP 5• Allows code injection by web users into web pages
viewed by other users (e.g. phishing attacks)
Introducing/Review HTML
• Hyper Text Markup Language:– Paired by angled brackets like XML (Ex. <font> </font>)– Can use a “WYSIWYG” (what you see is what you get) program such as
FrontPage or Dreamweaver for development– Dynamic web languages such as PHP simply produces HTML
MySQL
• MySQL queries same as SQL in Oracle
• Except it’s freeware!
• Has many of the same capabilities as traditional DBMSs– Multi-user, triggers, cursors, etc.– Doesn’t get performance advantages
MySQL commands
mysql> CREATE TABLE table_name …
INSERT Into table_name …
mysql> LOAD DATA LOCAL INFILE “file_name” INTO TABLE table_name;
mysql> file_name (containing a query)
mysql> SELECT … FROM … WHERE …
mysql> UPDATE …
mysql> DELETE …
MySQL commands
mysql> SHOW databases;
mysql> USE db_name;
mysql> SHOW tables;
mysql> DESCRIBE table_name;
mysql> create table …
mysql> insert into table values (…
mysql> select * from table_name;
Some php mysql functions
• Mysql_connect (“localhost”, “login”, “password”)• Mysql_select_db (‘db_name’, $link_id)• mysql_query (string [, resource $link_id])
– Executes a query, place result in variable, like a cursor
• mysql_error ( )– Returns error message from previous sql operation
• mysql_fetch_array ($result, how)– Traverses through cursor of query result– How is either mysql_assoc (use col. names)– Or mysql_num (use index number) or mysql_both
• Mysql_num_fields
PHP In Action
<?echo "Welcome to Vrbsky's DB";
// Connect to MySQL$link = mysql_connect("localhost", "svrbsky", “password");if (!$link) {die('Not connected: '. mysql_error()); } // see if connected// Select DB will use$dbselected = mysql_select_db('cs457db', $link); // you may not have to do thismysql_select_db('cs457db') or die ('Could not select database'); // see if worked
// Now the query$query = "Select * from testit"; // testit has 2 columns, id and age$result = mysql_query($query, $link);if (!$result) {die( 'Error in SQL: ' . mysql_error());}// process results using cursorwhile ($row = mysql_fetch_array($result)){ echo "<hr>"; //horizontal line echo "id: ". $row["id"] . "<br />"; echo "age: " . $row["age"] . "<br />";}mysql_free_result ($result); mysql_close($link); // disconnecting from MySQL?>
PHP and MySQL
<?php
$link=mysql_connect (“localhost”, “login”, “password”) mysql_select_db(‘db') or die('Cannot select database'); $query = 'CREATE TABLE contact( '. 'cid INT NOT NULL AUTO_INCREMENT, '. 'cname VARCHAR(20) NOT NULL, '. 'cemail VARCHAR(50) NOT NULL, '. 'csubject VARCHAR(30) NOT NULL, '.
mysql_query($query, $link) or die (‘Cannot create table’);mysql_close($link);?>
Access result row using col. name
<?php $link=mysql_connect (“localhost”, “login”, “password”) mysql_select_db(‘db') or die('Cannot select database'); $query = "SELECT ssn, lname FROM employee";$result = mysql_query($query, $link);while($row = mysql_fetch_array($result, MYSQL_ASSOC)){ echo “SSN :{$row[‘ssn']} <br>" . “Last : {$row[‘lname']} <br> <br>"; }
// Alterntiavely can use index// while($row = mysql_fetch_array($result, MYSQL_NUM))// { // echo “SSN :{$row[0]} <br>" . // “Last : {$row[1]} <br><br>";// } mysql_close($link);?>
Forms and input
• Can use HTML to create forms
• Users can input values to use as host variables in calls to mysql
Our setup
• A machine for us to use PHP and MySQL• ip address of machine is: 130.160.47.111• This is a linux machine
– Emacs, vi (I haven’t used this since the ’80s)
• You need to use SSH Secure Shell to Quick Connect to this machine
• username is 1st name initial followed by last name
• E-mail me requesting your password
Our setup
• In order to use your account you must do:
mkdir public_html
chmod 755 public_html/
cd public_html
• Use vi (or whatever) to create new PHP and HTML files in this directory
Our setup
• Create/save a .php file using an editor
• Sample program:<? php
Echo “Hello World”
?>
• To run it, from IE, type in ip address/~yourlogin/filename
MySQL
• To start up MySQL type in:mysql –u your_login –D your_login –p
It will then prompt you for your password
• You automatically have a db created with the same name as your login, that is the –D parameter above
Example html and php<html><head></head><center><!-- The following line results in php code executed after input values in form -><form method="post" action="example3.php"><table><tr><td align="left">Dnames</td><td><input type="text" name="dname"></td></tr><tr><td align="left">Lname</td><td><input type="text" name="lname" size="15"></td></tr><tr><colspan="2"><p align="center"><input type="submit" value="Enter record"></td></tr></table></form></center></html>
Html code
• The previous code uses a form to ask for input values to a table
• It will execute a php file after input values in form
• Can use those values in php file, must use $_POST[‘var_name’]
PHP code
• PHP code places values input from from into local variables
• Connects to database
• Inserts values into tables
• Prints out values
PHP and MySQL<?// This is example3.php used in previous .htm code$link = mysql_connect("localhost", "svrbsky", “password");if (!$link) {die('Not connected: '. mysql_error()); }mysql_select_db(‘svrbsky') or die ('Could not select database');$dname= $_POST['dname'];$lname = $_POST['lname'];$query = "insert into testit2 values ('$dname', '$lname')";$result = mysql_query($query);if (!$result) {die('SQL error: ' . mysql_error());}mysql_close($link);print "<html><body><center>";print "<p>You have just entered this record<p>";print "Dname: $dname<br>";print "Lname: $lname";print "</body></html>";?>
• Won’t this be fun for an assignment?
• Lots of great links on the web to get into
• How to determine what is error?