Menu

7/25/20

PDO


PDO là gì?

PDO là 1 đối tượng giúp ta truy xuất database với 12 loại hệ csdl khác nhau:

MySQL,
SQLite,
PostgreSQL, 
Microsoft SQL Server...

1=CHUỖI PDO

1. định danh kiểu csdl, và tên csdl : mysql:host=localhost; dbname=bookstore_vn
2. username: mặc định là root
3.password: mặc định null

2=KHỞI TẠO BIẾN

+khởi tạo 1 PDO ta dùng biến $obj (object)
+khởi tạo 1 lệnh dùng biến $sql (command)
+khởi tạo 1 truy vấn dùng biến $stm (viết tắt statement)
+dữ liệu trả về save vào biến $data.

3=CÁC HÀM (PHƯƠNG THỨC) TRUY VẤN

-query(): thực hiện truy vấn
-rowcount(): dưa về số dòng trả về. thêm, xóa, sửa
-fetchAll(): trả về kiểu dữ liệu mảng hoặc object...(PDO::FETCH_ASSOC hoặc PDO::FETCH_OBJ)

4=DÙNG VÒNG LẶP FOREACH

-dùng vòng lặp foreach để trích xuất dữ liệu từ biến $data trả về.

foreach ($data as $key => $value) {
  echo $value['masach'];
 }

-ta có thể kết hợp với các lệnh sau để định dạng khi xuất dữ liệu:

echo "<pre>";
var_dump($data);

5=CÁC VÍ DỤ:


truy vấn navicat: select * from sach where tensach like '%php%';

+Truy vấn thông thường

obj = new PDO("mysql:host=localhost; dbname=bookstorevn" , 'root' ,''  );
$obj->query('set names utf8');

$tensach="php";
$sql="select * from sach where tensach like '%$tensach%' ";

$stm = $obj->query($sql);
$n = $stm->rowCount();

-Khi data trả về thuộc kiểu Object

$data = $stm->fetchAll(PDO::FETCH_OBJ);
foreach ($data as $key => $value) {
echo $value->masach.' - ' .$value->tensach .'<br>';
}

-Khi data trả về thược kiểu mảng array
$data = $stm->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $key => $value) {
echo $value['masach'].' - ' .$value['tensach'].'<br>';
}

---------------KẾT QUẢ

th02-Lập trình web bằng PHP 5.3 và cơ sở dữ liệu
th03-Lập trình web bằng PHP 5.3 và cơ sở dữ liệu MySQL 5.1 (Tập1)
so dong tra ve 2

+Truy vấn theo cơ chế tránh SQL_injection (tấn công SQL) bằng cách prepare câu lệnh sql sao cho tốt nhất.


-----thực thi truy vấn dùng placeholder(giữ chỗ các tham số truyền vào) khi prepare, sẽ bỏ qua các kí tự đặc biệt, đồng thời thay thế phương thức query() bằng 2 phương thức prepair() và execute().

<?php
$obj = new PDO("mysql:host=localhost; dbname=bookstorevn" , 'root' ,''  );
$obj->query('set names utf8');

$tensach="php";

$sql2="select * from sach where tensach like ? ";//tao chuoi truy van

$stm = $obj->prepare($sql2);
$arr=["%$tensach%"];

$stm->execute($arr);
$n = $stm->rowCount();//so dong tra ve, so dong duoc them, so dong duoc xoa, so dong duoc sua
$data = $stm->fetchAll(PDO::FETCH_OBJ);

foreach ($data as $key => $value) {
echo $value->masach.' - ' .$value->tensach .'<br>';
}
?>


-----------------KẾT QUẢ TRUY VẤN

th02 - Lập trình web bằng PHP 5.3 và cơ sở dữ liệu
th03 - Lập trình web bằng PHP 5.3 và cơ sở dữ liệu MySQL 5.1 (Tập1)

+Thực hiện lệnh insert 1 mã loại

<?php
$obj = new PDO("mysql:host=localhost; dbname=bookstorevn" , 'root' ,''  );
$obj->query('set names utf8');

$maloai ='abc';
$tenloai='Loai ABC';
$sql="insert into loai(maloai, tenloai) values(?, ?) ";
$a=[$maloai, $tenloai];
$stm= $obj->prepare($sql);
$stm->execute($a);
$n = $stm->rowCount();
echo "<hr> Da them $n loai ";
?>



+Truy vấn khi mảng tham số truyền vào rỗng

<?php
$obj = new PDO("mysql:host=localhost; dbname=bookstorevn" , 'root' ,''  );
$obj->query('set names utf8');

$sql="select * from sach ";
$stm= $obj->prepare($sql);

$stm->execute(); //$stm->execute($a);$a=[];
$n = $stm->rowCount();
$data = $stm->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $key => $value) {
echo $value['masach'].' - ' .$value['tensach'] .'<br>';
}
echo "so dong tra ve $n";
?>


------------------------------------KẾT QUẢ

td01 - Từ Điển mẫu câu tiếng Nhật
td02 - Từ Điển Kinh Doanh Và Tiếp Thị Hiện Đại
td03 - Đại Từ Điển Tiếng Việt (Bản mới 2010)
td04 - từ điển y học sức khỏe bệnh lý Anh Anh Việt
td05 - Từ Điển Anh Việt - 75000 Từ
td06 - Từ điển địa danh hành chính Nam Bộ
th01 - 100 thủ thuật với Excel 2010
.
.
...
th16 - Tuyển Tập Thủ Thuật Javascript - Tập 1
th17 - Thiết Kế Web Với CSS
th18 - Thiết Kế Web Với JavaScript Và Dom
th88 - sach giao khoa lop 10
so dong tra ve 25






No comments:

Post a Comment