Làm cách nào để tìm nạp dữ liệu từ cơ sở dữ liệu bằng PDO trong PHP?

Có một số cách để chạy truy vấn CHỌN bằng PDO, khác nhau chủ yếu bởi sự hiện diện của tham số, loại tham số và loại kết quả. Tôi sẽ đưa ra các ví dụ cho mọi trường hợp để bạn có thể chọn một trường hợp phù hợp nhất với mình

Chỉ cần đảm bảo rằng bạn có một biến kết nối PDO được định cấu hình phù hợp cần để chạy các truy vấn SQL với PDO và để thông báo cho bạn về các lỗi có thể xảy ra

SELECT truy vấn không có tham số

Nếu không có biến nào sẽ được sử dụng trong truy vấn, chúng ta có thể sử dụng phương pháp query() thông thường thay vì chuẩn bị và thực hiện

// select all users
$stmt = $pdo->query("SELECT * FROM users");

Điều này sẽ cung cấp cho chúng tôi một đối tượng

// getting the last registered user
$stmt = $pdo->query("SELECT * FROM users ORDER BY id DESC LIMIT 1");
$user = $stmt->fetch();
0 có thể được sử dụng để tìm nạp các hàng thực tế

Bắt một hàng

Nếu một truy vấn được cho là chỉ trả về một hàng, thì bạn chỉ cần gọi phương thức

// getting the last registered user
$stmt = $pdo->query("SELECT * FROM users ORDER BY id DESC LIMIT 1");
$user = $stmt->fetch();
1 của biến
// getting the last registered user
$stmt = $pdo->query("SELECT * FROM users ORDER BY id DESC LIMIT 1");
$user = $stmt->fetch();
0

// getting the last registered user
$stmt = $pdo->query("SELECT * FROM users ORDER BY id DESC LIMIT 1");
$user = $stmt->fetch();

Lưu ý rằng trong PHP bạn có thể "xâu chuỗi" các cuộc gọi phương thức, gọi một phương thức của đối tượng được trả về, như

$user = $pdo->query("SELECT * FROM users ORDER BY id DESC LIMIT 1")->fetch();

Chọn nhiều hàng

Có hai cách để tìm nạp nhiều hàng được trả về bởi một truy vấn. Cách truyền thống nhất là sử dụng phương thức

// getting the last registered user
$stmt = $pdo->query("SELECT * FROM users ORDER BY id DESC LIMIT 1");
$user = $stmt->fetch();
1 trong vòng lặp
// getting the last registered user
$stmt = $pdo->query("SELECT * FROM users ORDER BY id DESC LIMIT 1");
$user = $stmt->fetch();
4

________số 8_______

Phương pháp này có thể được khuyến nghị nếu các hàng phải được xử lý từng cái một. Ví dụ: nếu quá trình xử lý đó là hành động duy nhất cần được thực hiện hoặc nếu dữ liệu cần được xử lý trước bằng cách nào đó trước khi sử dụng

Nhưng cách ưa thích nhất để tìm nạp nhiều hàng sẽ được hiển thị trên trang web là gọi phương thức trợ giúp tuyệt vời có tên là

// getting the last registered user
$stmt = $pdo->query("SELECT * FROM users ORDER BY id DESC LIMIT 1");
$user = $stmt->fetch();
5. Nó sẽ đặt tất cả các hàng được truy vấn trả về vào một mảng PHP, sau này có thể được sử dụng để xuất dữ liệu bằng một mẫu (được coi là tốt hơn nhiều so với lặp lại dữ liệu ngay trong quá trình tìm nạp). Vì vậy, mã sẽ là

$data = $pdo->query("SELECT * FROM users")->fetchAll();
// and somewhere later:
foreach ($data as $row) {
    echo $row['name']."
\n";
}

CHỌN truy vấn có tham số

Nhưng hầu hết thời gian chúng ta phải sử dụng một hoặc hai biến trong truy vấn và trong trường hợp như vậy, chúng ta nên sử dụng câu lệnh đã chuẩn bị sẵn (còn gọi là truy vấn được tham số hóa), trước tiên hãy chuẩn bị một truy vấn có tham số (hoặc dấu giữ chỗ) rồi thực hiện truy vấn đó

Trong PDO, chúng ta có thể sử dụng cả trình giữ chỗ theo vị trí và được đặt tên. Đối với các truy vấn đơn giản, cá nhân tôi thích trình giữ chỗ theo vị trí hơn, tôi thấy chúng ít dài dòng hơn, nhưng đó hoàn toàn là vấn đề sở thích

CHỌN truy vấn với trình giữ chỗ vị trí

// select a particular user by id
$stmt = $pdo->prepare("SELECT * FROM users WHERE id=?");
$stmt->execute([$id]);
$user = $stmt->fetch();

CHỌN truy vấn với trình giữ chỗ được đặt tên

// select a particular user by id
$stmt = $pdo->prepare("SELECT * FROM users WHERE id=:id");
$stmt->execute(['id' => $id]);
$user = $stmt->fetch();

Chọn nhiều hàng

Tìm nạp nhiều hàng từ một truy vấn đã chuẩn bị sẽ giống với tìm nạp từ một truy vấn không có tham số đã được hiển thị

Tóm lược. trong hướng dẫn này, bạn sẽ học cách truy vấn dữ liệu từ một bảng bằng cách sử dụng PHP PDO bằng cách sử dụng phương thức

$pdo = require 'connect.php'; $sql = 'SELECT publisher_id, name FROM publishers'; $statement = $pdo->query($sql); // get all publishers $publishers = $statement->fetchAll(PDO::FETCH_ASSOC); if ($publishers) { // show the publishers foreach ($publishers as $publisher) { echo $publisher['name'] . '
'
; } }

Code language: HTML, XML (xml)
6 của đối tượng

$pdo = require 'connect.php'; $sql = 'SELECT publisher_id, name FROM publishers'; $statement = $pdo->query($sql); // get all publishers $publishers = $statement->fetchAll(PDO::FETCH_ASSOC); if ($publishers) { // show the publishers foreach ($publishers as $publisher) { echo $publisher['name'] . '
'
; } }

Code language: HTML, XML (xml)
7 và một câu lệnh đã chuẩn bị sẵn

Để chọn dữ liệu từ một bảng bằng PDO, bạn có thể sử dụng

  • Phương thức

    $pdo = require 'connect.php'; $sql = 'SELECT publisher_id, name FROM publishers'; $statement = $pdo->query($sql); // get all publishers $publishers = $statement->fetchAll(PDO::FETCH_ASSOC); if ($publishers) { // show the publishers foreach ($publishers as $publisher) { echo $publisher['name'] . '
    '
    ; } }

    Code language: HTML, XML (xml)
    6 của đối tượng PDO
  • Hoặc một tuyên bố chuẩn bị

Khi một truy vấn không có bất kỳ tham số nào, bạn có thể sử dụng phương thức

$pdo = require 'connect.php'; $sql = 'SELECT publisher_id, name FROM publishers'; $statement = $pdo->query($sql); // get all publishers $publishers = $statement->fetchAll(PDO::FETCH_ASSOC); if ($publishers) { // show the publishers foreach ($publishers as $publisher) { echo $publisher['name'] . '
'
; } }

Code language: HTML, XML (xml)
6. Ví dụ

SELECT * FROM publishers;

Code language: SQL (Structured Query Language) (sql)

Tuy nhiên, nếu truy vấn chấp nhận một hoặc nhiều tham số, bạn nên sử dụng câu lệnh đã chuẩn bị vì lý do bảo mật

Sử dụng phương thức query() để chọn dữ liệu từ một bảng

Để truy vấn dữ liệu từ một bảng bằng phương pháp

$pdo = require 'connect.php'; $sql = 'SELECT publisher_id, name FROM publishers'; $statement = $pdo->query($sql); // get all publishers $publishers = $statement->fetchAll(PDO::FETCH_ASSOC); if ($publishers) { // show the publishers foreach ($publishers as $publisher) { echo $publisher['name'] . '
'
; } }

Code language: HTML, XML (xml)
6, bạn làm theo các bước sau

  1. Tạo kết nối cơ sở dữ liệu đến máy chủ cơ sở dữ liệu
  2. Thực thi câu lệnh

    McGraw-Hill Education Penguin/Random House Hachette Book Group Harper Collins Simon and Schuster

    1 bằng cách chuyển nó tới phương thức

    $pdo = require 'connect.php'; $sql = 'SELECT publisher_id, name FROM publishers'; $statement = $pdo->query($sql); // get all publishers $publishers = $statement->fetchAll(PDO::FETCH_ASSOC); if ($publishers) { // show the publishers foreach ($publishers as $publisher) { echo $publisher['name'] . '
    '
    ; } }

    Code language: HTML, XML (xml)
    6 của đối tượng

    $pdo = require 'connect.php'; $sql = 'SELECT publisher_id, name FROM publishers'; $statement = $pdo->query($sql); // get all publishers $publishers = $statement->fetchAll(PDO::FETCH_ASSOC); if ($publishers) { // show the publishers foreach ($publishers as $publisher) { echo $publisher['name'] . '
    '
    ; } }

    Code language: HTML, XML (xml)
    7

Phương thức

$pdo = require 'connect.php'; $sql = 'SELECT publisher_id, name FROM publishers'; $statement = $pdo->query($sql); // get all publishers $publishers = $statement->fetchAll(PDO::FETCH_ASSOC); if ($publishers) { // show the publishers foreach ($publishers as $publisher) { echo $publisher['name'] . '
'
; } }

Code language: HTML, XML (xml)
6 trả về một đối tượng

McGraw-Hill Education Penguin/Random House Hachette Book Group Harper Collins Simon and Schuster

5. Nếu xảy ra lỗi, phương thức

$pdo = require 'connect.php'; $sql = 'SELECT publisher_id, name FROM publishers'; $statement = $pdo->query($sql); // get all publishers $publishers = $statement->fetchAll(PDO::FETCH_ASSOC); if ($publishers) { // show the publishers foreach ($publishers as $publisher) { echo $publisher['name'] . '
'
; } }

Code language: HTML, XML (xml)
6 trả về

McGraw-Hill Education Penguin/Random House Hachette Book Group Harper Collins Simon and Schuster

7

Phần sau đây minh họa cách truy vấn tất cả các hàng từ bảng

McGraw-Hill Education Penguin/Random House Hachette Book Group Harper Collins Simon and Schuster

8 trong cơ sở dữ liệu

McGraw-Hill Education Penguin/Random House Hachette Book Group Harper Collins Simon and Schuster

9

$pdo = require 'connect.php'; $sql = 'SELECT publisher_id, name FROM publishers'; $statement = $pdo->query($sql); // get all publishers $publishers = $statement->fetchAll(PDO::FETCH_ASSOC); if ($publishers) { // show the publishers foreach ($publishers as $publisher) { echo $publisher['name'] . '
'
; } }

Code language: HTML, XML (xml)

đầu ra

McGraw-Hill Education Penguin/Random House Hachette Book Group Harper Collins Simon and Schuster

Khi bạn sử dụng chế độ

$pdo = require 'connect.php';

Code language: PHP (php)
0, hàm

McGraw-Hill Education Penguin/Random House Hachette Book Group Harper Collins Simon and Schuster

5 trả về một mảng kết hợp gồm các phần tử trong đó khóa của mỗi phần tử là tên cột của tập kết quả

Làm thế nào nó hoạt động

Đầu tiên, tạo kết nối cơ sở dữ liệu tới cơ sở dữ liệu

McGraw-Hill Education Penguin/Random House Hachette Book Group Harper Collins Simon and Schuster

9

$pdo = require 'connect.php';

Code language: PHP (php)

Thứ hai, xác định một câu lệnh SQL

McGraw-Hill Education Penguin/Random House Hachette Book Group Harper Collins Simon and Schuster

1 để chọn tất cả các hàng từ bảng

McGraw-Hill Education Penguin/Random House Hachette Book Group Harper Collins Simon and Schuster

8

$sql = 'SELECT publisher_id, name FROM publishers';

Code language: PHP (php)

Thứ ba, chạy truy vấn bằng cách gọi phương thức

$pdo = require 'connect.php'; $sql = 'SELECT publisher_id, name FROM publishers'; $statement = $pdo->query($sql); // get all publishers $publishers = $statement->fetchAll(PDO::FETCH_ASSOC); if ($publishers) { // show the publishers foreach ($publishers as $publisher) { echo $publisher['name'] . '
'
; } }

Code language: HTML, XML (xml)
6 của đối tượng PDO

$statement = $pdo->query($sql);

Code language: PHP (php)

Thứ tư, tìm nạp tất cả dữ liệu từ tập kết quả

$publishers = $statement->fetchAll(PDO::FETCH_ASSOC);

Code language: PHP (php)

Phương thức

$pdo = require 'connect.php';

Code language: PHP (php)
6 với tùy chọn

$pdo = require 'connect.php';

Code language: PHP (php)
0 trả về một mảng dữ liệu kết hợp trong đó

  • Các phím là tên xuất hiện trong danh sách lựa chọn
  • và các giá trị là các hàng dữ liệu trong tập kết quả

Cuối cùng, lặp lại tập kết quả và hiển thị phần tử của mảng

// show the publishers if ($publishers) { foreach ($publishers as $publisher) { echo $publisher['name'] . '
'
; } }

Code language: HTML, XML (xml)

Sử dụng câu lệnh đã chuẩn bị để truy vấn dữ liệu

Ví dụ sau minh họa cách sử dụng câu lệnh đã chuẩn bị để truy vấn dữ liệu từ một bảng

$publisher_id = 1; // connect to the database and select the publisher $pdo = require 'connect.php'; $sql = 'SELECT publisher_id, name FROM publishers WHERE publisher_id = :publisher_id'; $statement = $pdo->prepare($sql); $statement->bindParam(':publisher_id', $publisher_id, PDO::PARAM_INT); $statement->execute(); $publisher = $statement->fetch(PDO::FETCH_ASSOC); if ($publisher) { echo $publisher['publisher_id'] . '.' . $publisher['name']; } else { echo "The publisher with id $publisher_id was not found."; }

Code language: HTML, XML (xml)

Làm thế nào nó hoạt động

Đầu tiên, xác định id nhà xuất bản. Trong thực tế, bạn có thể lấy nó từ chuỗi truy vấn

$publisher_id = 1;

Code language: HTML, XML (xml)

Thứ hai, sử dụng

$pdo = require 'connect.php';

Code language: PHP (php)
8 để kết nối với cơ sở dữ liệu

McGraw-Hill Education Penguin/Random House Hachette Book Group Harper Collins Simon and Schuster

9 và trả về một phiên bản mới của đối tượng PDO

Làm cách nào tôi có thể tìm nạp dữ liệu từ cơ sở dữ liệu trong PHP?

Có hai cách để kết nối với cơ sở dữ liệu bằng PHP. .
Hướng đối tượng MySQLi $conn->query($query);
MySQLi Thủ tục mysqli_query($conn, $query)
PDO. $stmt = $conn->prepare($query);

Làm cách nào để sử dụng PDO trong PHP?

Chi tiết về Phương thức Lớp PDO .
Tên người dùng - Một chuỗi chứa tên người dùng của người dùng. Đối với một số trình điều khiển PDO nhất định, tham số này là tùy chọn
Mật khẩu - Mật khẩu của người dùng được lưu trữ trong chuỗi này. .
Tùy chọn trình điều khiển - Đây là tham số tùy chọn—một khóa=>danh sách giá trị của các tùy chọn liên kết duy nhất cho trình điều khiển

Làm cách nào để tìm nạp dữ liệu từ cơ sở dữ liệu trong PHP mà không cần vòng lặp?

Bạn chỉ có thể gọi mysql_fetch_assoc() (hoặc bất kỳ chức năng tương tự nào) một . Như thế này. $sql = "CHỌN * TỪ bảng"; .

Làm cách nào để lấy dữ liệu từ cơ sở dữ liệu trong PHP và hiển thị trong bảng?

php $connect=mysql_connect('localhost', 'root', 'mật khẩu');