Đọc dữ liệu từ cơ sở dữ liệu không khác lắm so với chèn dữ liệu, với bước 1 đến 5 gần như giống hệt nhau trong khi bước thứ sáu thì khác
1] Viết câu lệnh chọn thông thường và một lần nữa, thay vì các giá trị, hãy đặt các phần giữ chỗ có tên. Ví dụ
1
$sql = "CHỌN * TỪ người dùng";
2] Chuẩn bị truy vấn
1
$truy vấn = $dbh -> prepare[$sql];
3] Thực hiện truy vấn
1
$truy vấn -> thực thi[];
4] Gán dữ liệu mà bạn đã lấy từ cơ sở dữ liệu [ở bước trước] cho một biến
1
$kết quả = $truy vấn -> fetchAll[PDO::FETCH_OBJ];
Ở đây tôi đã sử dụng tham số PDO. FETCH_OBJ trả về dữ liệu đã tìm nạp dưới dạng một đối tượng. Nếu bạn muốn tìm nạp dữ liệu ở dạng mảng, hãy sử dụng. PDO. FETCH_ASSOC. 5] Đảm bảo rằng bạn có thể truy xuất dữ liệu từ cơ sở dữ liệu bằng cách đếm số lượng bản ghi
1
if[$truy vấn -> rowCount[] > 0]{}
6] Trong trường hợp truy vấn trả về ít nhất một bản ghi, chúng ta có thể lặp lại các bản ghi trong vòng lặp foreach
Đầu tiên, kết nối với cơ sở dữ liệu MySQL. Kiểm tra kết nối với cơ sở dữ liệu MySQL bằng hướng dẫn PDO để biết thông tin chi tiết
Code language: PHP [php]
$pdo = new PDO["mysql:host=$host;dbname=$dbname", $username, $password];
Sau đó, xây dựng một câu lệnh SELECT và thực thi nó bằng cách sử dụng phương thức
2 của đối tượng PDOCode language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
Code language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
Phương thức
2 của đối tượng PDO trả về một đối tượngCode language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
4 hoặcCode language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
0 nếu không thành côngCode language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
Tiếp theo, đặt chế độ tìm nạp
1 cho đối tượngCode language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
4 bằng cách sử dụng phương thứcCode language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
3. Chế độCode language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
1 hướng dẫn phương thứcCode language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
5 trả về tập kết quả dưới dạng một mảng được lập chỉ mục theo tên cộtCode language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
Code language: PHP [php]
$q->setFetchMode[PDO::FETCH_ASSOC];
Sau đó, tìm nạp từng hàng từ tập kết quả cho đến khi không còn hàng nào bằng cách sử dụng phương thức
5 của đối tượngCode language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
4Code language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
Để tất cả chúng cùng nhau
PHP MySQL Query Data Demo Employees First Name Last Name Job Title
Code language: HTML, XML [xml]
PHP MySQL Truy vấn dữ liệu bằng cách sử dụng câu lệnh chuẩn bị PDO
Trong thực tế, chúng ta thường chuyển đối số từ PHP sang câu lệnh SQL e. g. , lấy nhân viên có họ kết thúc bằng
8. Để làm điều đó một cách an toàn và tránh tấn công SQL injection, bạn cần sử dụng câu lệnh chuẩn bị PDOCode language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
Hãy cùng xem ví dụ sau
1Code language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
Cách thức hoạt động của kịch bản
- Đầu tiên, chúng tôi sử dụng dấu chấm hỏi [?] trong câu lệnh
9. PDO sẽ thay thế dấu chấm hỏi trong truy vấn bằng đối số tương ứng. Dấu chấm hỏi được gọi là giữ chỗ vị trí
Code language: PHP [php]$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
- Tiếp theo, chúng ta gọi phương thức
0 của đối tượng PDO để chuẩn bị thực thi câu lệnh SQL
Code language: PHP [php]$q->setFetchMode[PDO::FETCH_ASSOC];
- Sau đó, chúng ta thực thi câu lệnh bằng cách gọi phương thức
1 của đối tượng
Code language: PHP [php]$q->setFetchMode[PDO::FETCH_ASSOC];
4. Ngoài ra, chúng tôi chuyển một đối số dưới dạng một mảng để thay thế trình giữ chỗ trong câu lệnh
Code language: PHP [php]$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
9. Bằng cách này, câu lệnh
Code language: PHP [php]$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
9 sẽ được dịch như sau
Code language: PHP [php]$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
7Code language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
- Sau đó, chúng tôi đặt chế độ tìm nạp cho đối tượng
4
Code language: PHP [php]$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
- Cuối cùng, chúng tôi tìm nạp từng hàng của tập kết quả và hiển thị trường họ
PHP cung cấp cho bạn một cách khác để sử dụng trình giữ chỗ trong câu lệnh đã chuẩn bị có tên là trình giữ chỗ có tên. Ưu điểm của việc sử dụng trình giữ chỗ được đặt tên là
- mô tả nhiều hơn
- Nếu câu lệnh SQL có nhiều trình giữ chỗ, thì việc chuyển các đối số sang phương thức
1 sẽ dễ dàng hơn
Code language: PHP [php]$q->setFetchMode[PDO::FETCH_ASSOC];
Hãy cùng xem ví dụ sau
9Code language: PHP [php]
$sql = 'SELECT lastname, firstname, jobtitle FROM employees ORDER BY lastname'; $q = $pdo->query[$sql];
7 vàCode language: PHP [php]
$q->setFetchMode[PDO::FETCH_ASSOC];
8 là phần giữ chỗ được đặt tên. Chúng được thay thế bằng đối số tương ứng trong mảng kết hợp mà chúng ta chuyển đến phương thức thực thiCode language: PHP [php]
$q->setFetchMode[PDO::FETCH_ASSOC];