Sistemas de Informação e Bases de Dados: PHP and SQL
Sistemas de Informação e Bases de Dados: PHP and SQL
Presentation
Operations
Storage
Web browser
Web server
Database
(e.g. Firefox on
your laptop)
(e.g. Apache on
sigma.ist.utl.pt)
(e.g. MySQL on
db.ist.utl.pt)
SQL
'aaaa0000'
Database server
(MySQL)
cursor
Database server
(MySQL)
cursor
fetch
array
Database server
(MySQL)
1
cursor
fetch
array
Database server
(MySQL)
cursor
fetch
array
Database server
(MySQL)
Web server
(PHP)
sigma.ist.utl.pt
Database server
(MySQL)
db.ist.utl.pt
$host = "db.ist.utl.pt";
$user = "istxxxxxx";
$pass = "aaaa0000";
$dsn = "mysql:host=$host;dbname=$user";
}
catch(PDOException $exception)
{
echo("<p>Error: ");
echo($exception->getMessage());
echo("</p>");
exit();
}
Error: SQLSTATE[28000] [1045] Access denied for user
'istxxxxxx'@'sigma01.ist.utl.pt' (using password: YES)
Array
foreach($result as $row)
{
echo("<p>$row</p>");
}
Array
Array
Array
Array
Array
Array
A-101Downtown500.00
foreach($result as $row)
{
echo("<p>");
echo($row['account_number']);
echo($row['branch_name']);
echo($row['balance']);
echo("</p>");
}
A-102Perryridge400.00
A-201Brighton900.00
A-215Mianus700.00
A-217Brighton750.00
A-222Redwood700.00
A-305Round Hill350.00
processing forms
dynamically-generated forms
security (SQL injection)
prepared statements
Static form
<html>
<body>
<form action="insert.php" method="post">
<h3>Insert a new account</h3>
<p>Account no.: <input type="text" name="account_number"/></p>
<p>Branch:
<select name="branch_name">
<option value="Brighton">Brighton</option>
<option value="Downtown">Downtown</option>
<option value="Mianus">Mianus</option>
<option value="North Town">North Town</option>
<option value="Perryridge">Perryridge</option>
<option value="Pownal">Pownal</option>
<option value="Redwood">Redwood</option>
<option value="Round Hill">Round Hill</option>
</select>
</p>
<p>Balance: <input type="text" name="balance"/></p>
<p><input type="submit" value="Submit"/></p>
</form>
</body>
</html>
Dynamically-generated form
<html>
<body>
<form action="insert.php" method="post">
<h3>Insert a new account</h3>
<p>Account no.: <input type="text" name="account_number"/></p>
<p>Branch:
<select name="branch_name">
<?php
$connection = new PDO($dsn, $user, $pass);
$sql = "SELECT branch_name FROM branch ORDER BY branch_name";
$result = $connection->query($sql);
foreach($result as $row)
{
$branch_name = $row['branch_name'];
echo("<option value=\"$branch_name\">$branch_name</option>");
}
?>
</select>
</p>
<p>Balance: <input type="text" name="balance"/></p>
<p><input type="submit" value="Submit"/></p>
</form>
</body>
</html>
INSERTecho("<p>Rows
INTO account inserted:
VALUES ('A-215',
'Perryridge', 400)
$nrows</p>");
...
INSERTecho("<p>Rows
INTO account inserted:
VALUES ('A-125',
'Perryridge', 400);
$nrows</p>");
DROP TABLE
... depositor; --)
foreach($stmt as $row)
{
echo($row['balance']);
}
...