-----
Phần 107. PHP
Data Object – prepared statement
Xem và làm theo clip số 15 của thầy Nguyễn Anh Tuấn:
Đối với lệnh SQL có tham số động, không nên truyền câu lệnh
SQL trực tiếp thông qua chuỗi, mà nên sử dụng prepared statement để tránh bị
tấn công SQL injection.
Tham khảo thêm về prepared statement tại đây: http://hoclaptrinhweb.org/lap-trinh/hoc-php/255-bai-11-thao-tac-voi-csdl-trong-php-thong-qua-pdo.html
Để sử dụng prepared statement, thực hiện các bước sau:
- Tạo câu truy vấn,
$sql = "SELECT ma_mon, ten_mon, noi_dung_tom_tat,
don_gia, hinh FROM mon_an";
- Sử dụng hàm prepare() để tạo một prepared statement. Ví
dụ,
$stmt = $pdo->prepare($sql);
- Thực thi một prepared statement bằng hàm execute(). Ví dụ,
$stmt->execute();
- Chuyển kết quả truy vấn từ prepared statement sang một
mảng hoặc một mảng các đối tượng.
Ví dụ sau trả về một mảng các đối tượng kiểu stdClass, với
tên thuộc tính của đối tượng tương ứng với tên của cột,
if($stmt->rowcount() > 0){
$mon_an
= $stmt->fetchAll(PDO::FETCH_OBJ);
}
Lưu lại các đoạn mã để tham khảo.
Đoạn mã của default.css
body { background: #ccc; }
h1 { text-align: center; color: #F00; }
#main { width: 700px; margin: 0 auto; border: #f00 solid 1px;
background: #fff; }
.khung { width: 680px; height: 200px; border-bottom: #999 solid
1px; padding: 10px; }
.khung img { width: 250px; float: left; margin-right: 10px; }
Đoạn mã của ds_mon_an.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta
charset="UTF-8">
<title>Danh
sách món ăn</title>
<link
rel="stylesheet" href="default.css">
</head>
<?php
include("connection.php");
//Tạo câu truy
vấn
$sql =
"SELECT ma_mon, ten_mon, noi_dung_tom_tat, don_gia, hinh FROM
mon_an";
//Tạo một
prepared statement
$stmt =
$pdo->prepare($sql);
//Thực thi
prepared statement
$stmt->execute();
//Chuyển kết quả
truy vấn sang một mảng các đối tượng
if($stmt->rowcount()
> 0){
$mon_an
= $stmt->fetchAll(PDO::FETCH_OBJ);
}
?>
<body>
<div id="main">
<h1>Danh
sách món ăn</h1>
<?php
foreach ($mon_an
as $item) {
?>
<div
class="khung">
<img
src="><?php echo $item ->hinh; ?>"
alt="Hinh">
<h3><?php
echo $item ->ten_mon; ?></h3>
<?php
echo $item ->noi_dung_tom_tat; ?>
<p>Đơn
giá: <?php echo $item ->don_gia; ?> VNĐ</p>
</div>
<?php
}
?>
</div>
<?php
$pdo->NULL;
?>
</body>
</html>
-----------
Cập nhật 16/2/2017
-----------