Web07_PHP MySQL
Web07_PHP MySQL
Type Description
maximum 255 characters, fixed length =
char(length) length
Type Description
date yyyy-mm-dd
time hh:mm:ss
Type Description
CREATE Create CSDL or table
ALTER changing tables available
SELECT select data from the table
DELETE delete data from the table
DESCRIBE See a description of the table structure
INSERT INTO write values in the table
UPDATE Update data already in the table
DROP delete the entire table or database
HienLTH – KhietLTN Web Design 6
2.Common commands in MySQL
VD:
DELETE FROM ketqua WHERE MaSV =
‘K29.103.010’
VD:
INSERT INTO ketqua (mamon, diem) VALUES (‘LTWEB’,
10);
INSERT INTO ketqua VALUES(‘’, ‘K29.103.010’, ‘LTWEB’,
10);
HienLTH – KhietLTN Web Design 11
2.Common commands in MySQL
UPDATE tablename
SET columname = value, ...
[WHERE ...];
VD:
UPDATE ketqua SET diem = 10 WHERE MaSV =
‘K29.103.010’
EG:
• Delete table SINHVIEN: DROP TABLE SinhVien
• Delete CSDL QLSV: DROP DATABASE QLSV;
PHP script
mysqli PDO
◼ mysqli mysqli
◼ mysqli_stmt
◼ mysqli_result
• Set up in php.ini
extension=php_mysqli.dll
• Advantages
– Supports object-oriented programming
– Supports database replication and distribution
– Compress and encrypt data on the connection
– Performance and code optimization
• Disadvantages
– Only works with MySQL databases
// OOP mysqli
$mysqli = new mysqli('hostname',
'username', 'password', 'dbname');
// mysqli
$link = mysqli_connect('hostname',
'username', 'password', 'dbname');
// OOP mysqli
$mysqli->select_db('dbname');
// mysqli
mysqli_select_db($link, 'dbname');
// OOP mysqli
mysqli->query($link, "SET NAMES ‘character set’")
// mysqli
mysqli_query($link, "SET NAMES ‘character set’")
• Query
// OOP mysqli
$result = mysqli->query(“query")
// mysqli
$result = mysqli_query($link, “query")
// mysqli
$row = mysqli_fetch_row($result)
$row = mysqli_fetch_assoc($result)
$row = mysqli_fetch_array($result, result_type)
// OOP mysqli
$result->close()
// mysqli
mysqli_free_result($result)
// OOP mysqli
$mysqli->close()
// mysqli
mysqli_close($link)
• Data query:
$result = mysqli_query(‘câu_truy_vấn’);
• Use Vietnamese:
mysqli_query(“SET CHARACTER SET UTF8”);
Hay mysqli_query(“SET NAMES UTF8”);
• Advantages:
– Applied from PHP 5.0 (built into PHP 5.1)
– Provides object-oriented communication
– Provides a consistent communication that allows data
movement between different database systems such as
Oracle, DB2, Microsoft SQL Server, PostgreSQL
• Disadvantages:
– No work on PHP versions <5.0.
– Do not take advantage of the advanced new features of
MySQL version 4.1.3 or higher, such as nested SQL
features.
HienLTH – KhietLTN Web Design 31
Connect CSDL PDO
try {
$dbh = new PDO($dsn,
$user, $password, $options);
} catch (PDOException $e) {
echo “Failed to connect:”
. $e->getMessage();
}
• Driver:optional_driver_specific_stuff
– sqlite:/path/to/db/file
– sqlite::memory:
– mysql:host=name;dbname=dbname
– pgsql:native_pgsql_connection_string
– oci:dbname=dbname;charset=charset
– firebird:dbname=dbname;charset=charset;role=role
– odbc:odbc_dsn
$deleted = $dbh->query(
“DELETE FROM FOO WHERE 1”);
$changes = $dbh->query(
“UPDATE FOO SET active=1 ”
. “WHERE NAME LIKE ‘%joe%’”);
$stmt = $dbh->prepare(
"SELECT extension, name from CREDITS");
if ($stmt->execute()) {
$stmt->bindColumn(‘extension', $extension);
$stmt->bindColumn(‘name', $name);
while ($stmt->fetch(PDO_FETCH_BOUND)) {
echo “Extension: $extension\n”;
echo “Author: $name\n”;
}
}
try {
$dbh->beginTransaction();
$dbh->query(‘UPDATE …’);
$dbh->query(‘UPDATE …’);
$dbh->commit();
} catch (PDOException $e) {
$dbh->rollBack();
}
HienLTH – KhietLTN Web Design 40
Get ID of The Last Inserted
Record
• $sql = "INSERT INTO Account (fullname, email)
VALUES ('John Doe', 'john@exam.com')";
• MySQLi Procedural
if (mysqli_query($conn, $sql))
$last_id = mysqli_insert_id($conn);
• MySQLi Object-oriented
if ($conn->query($sql) === TRUE)
$last_id = $conn->insert_id;
• PDO
$conn->exec($sql);
$last_id = $conn->lastInsertId();
HienLTH – KhietLTN Web Design 41
Insert Multiple (1/2) - mysqli
? 0 or 1 duplications
* 0 or more duplications
+ 1 or more duplications
{n} exactly n times
{n, m} repeats between n and m times
{n,} repeats at least n times (n or more)
( ) grouping (like math)
Typical attacks:
SQL injection
XSS scripting
session attacks
man in the middle
Username hien
Password 123
Password
Password
Password
Age 23 OR 1=1;
An attack:
determine field and table
names
insert a new record
SELECT * FROM LOGIN WHERE Username=$_POST[‘Username’];
Username
x'; INSERT INTO members (‘User’, ‘pass’,
‘FirstName’, ‘LastName’) VALUES
(‘test01’,‘smelly’‘Steve’,‘Johnson’); --
• Cú pháp:
==> chèn dấu \ vào trước các ký tự: \x00, \n, \r, \,
', " và \x1a
http://php.net/manual/en/mysqli.real-escape-string.php
HienLTH – KhietLTN Web Design 58
For example