Kết nối từ PHP đến PostgreSQL

Kết nối từ PHP đến PostgreSQL có hai cách, một là dùng thư viện pgsql, hai là dùng PDO. Cả hai đều có sẵn trong php để bạn sử dụng.



Cấu hình kết nối từ PHP đến PostgreSQL

Để thực hiện kết nối từ PHP đến PostgreSQL, bạn cần phải bật 2 extension pgsql pdo_pgsql . Hai extension này có sẵn trong php. Thực hiện như sau:

1. Mở Xampp (nếu dùng xampp) rồi mở PHP.ini như hình

2. Trong cửa sổ hiện ra, cuộn xuống sẽ thấy 2 mục pdo_pgsqlpgsql. bạn xóa dấu chấm phẩy (;) ở đầu 2 dòng.

Cấu hình kết nối từ PHP đến PostgreSQL

Mục đích của việc này là để 2 thư viện này được nạp vào bộ nhớ để có thể dùng nó kết nối qua server POSTgreSQL.

2. Stop và start lại Apache để 2 thư viện được nạp vào. Vậy là 2 extension đã được nạp. Sẵn sàng để bạn dùng trong việc lập trình kết nối từ PHP đến PostgreSQL rồi đó.

Kết nối từ PHP đến PostgreSQL dùng thư viện pgsql

Để kết nối đến PostgreSQL dùng thư viện pgsql, đầu tiên bạn tạo đối tượng kết nối với hàm pg_connect(), sau đó dùng hàm pg_query() để chạy câu lệnh sql.

Tạo đối tượng kết nối đến postgresql

Để tạo đối tượng kết nối đến postgresql, đầu tiên bạn tạo chuỗi kết nối $con_str. Trong chuỗi này, giá trị biến $host là địa chỉ của máy đang chạy Postges (localhost). Còn $db là tên database, biến $user là username ở bên postgres. Biến $pass là mật khẩu của username. Biến $port là port hoạt động của postgres (mặc định là 5432) . Bạn chỉnh các giá trị cho phù hợp trên máy của mình.

<?php
$host = "localhost";
$db = "laptop";
$user = "postgres";
$pass = "123";
$port = "5432";
$con_str = "host=${host} port=${port} dbname=${db} user=${user} password=${pass} options=--client_encoding=UTF8";
$db = pg_connect($con_str);
?>

Hàm pg_connect () nhận tham số là chuỗi kết nối $con_str đã tạo ở trên. Hàm trả về 1 đối tượng là kết nối đến database hoặc false nếu kết nối không thành công.

Gửi câu lệnh sql từ php đến PostgreSQL

Sau khi có đối tượng kết nối, Bạn gửi câu lệnh sql qua Postgres cho nó thực thi (select, insert , update, delete,…) bằng hàmg pg_query như ví dụ sau.

<?php
$sql = "SELECT * FROM nha_sx";
$data_arr = pg_query($db, $sql) ;
if (!$data_arr) die("Lỗi khi lấy dữ liệu");
?>

Hiện dữ liệu lấy được từ PostgreSQL

Nếu câu lệnh sql là select (như ví dụ trên), thì biến $data_arr là đối tượng chứa các dòng dữ liệu lấy về từ Postgres. Từ đây Bạn dùng hàm pg_fetch_assoc() để trích từng dòng của $data_arr ra để hiện ra trang web.

Hàm pg_fetch_assoc() mỗi lần được gọi sẽ trả về 1 dòng dữ liệu dạng mảng. Cứ thế mà bạn hiện ra

<?php while ($row = pg_fetch_assoc($data_arr)) {?>
<p> <?php echo $row['ten']?> </p>
<?php } ?>

Kết nối từ PHP đến PostgreSQL dùng PDO

Để kết nối đến PostgreSQL dùng PDO, đầu tiên bạn tạo đối tượng kết nối với lệnh new PDO . Sau đó dùng hàm pg_query() để chạy câu lệnh sql.

Tạo đối tượng pdo kết nối đến postgresql

Để tạo đối tượng kết nối đến postgresql, đầu tiên bạn tạo chuỗi kết nối $dsn. Trong chuỗi này, giá trị biến $host là địa chỉ của máy chạy PostgreSQL. Biến $port là số hiệu hoạt động của postgres, mặc định là 5432 . Biến $db là tên database bên Postgres bạn cần kết nối đến.

<?php
$host = "localhost";
$db = "laptop";
$user = "postgres";
$pass = "123";
$port = "5432";
$dsn = "pgsql:host=${host}; port=${port}; dbname=${db}; options=--client_encoding=UTF8";
$db = new PDO($dsn, $user, $pass);
?>

Đối tượng kết nối được tạo ra bằng lệnh new PSO. Trong đó $dsn là chuỗi chứa các thông số kết nối, biến $user là username ở bên postgres, còn biến $pass là mật khẩu của username.

Gửi câu lệnh sql từ php đến PostgreSQL

Sau khi có đối tượng kết nối, Bạn gửi câu lệnh sql qua Postgres cho nó thực thi (select, insert , update, delete,…) bằng hàmg query trong đối tượng kết nối. Mời xem ví dụ.

<?php
$sql = "SELECT * FROM nha_sx";
$result = $db->query($sql);
?>

Hiện dữ liệu lấy được từ PostgreSQL

Nếu câu lệnh sql mà bạn thực thi là câu lệnh select (xem ví dụ trên), thì biến $result là đối tượng chứa dữ liệu nhận được từ Postgres. Từ đây Bạn dùng vòng lặp foreach để trích từng dòng dữ liệu trong $result để hiện ra trang web. Vòng lặp foreach mỗi lần lặp sẽ cho biến $row là 1 mảng. Cứ thế mà bạn hiện trong trang.

<?php foreach ($result as $row) {   ?>
<a href="#"> <?php echo $row['ten']?> </a> |
<?php } ?>

Việc kết nối từ PHP đến PostgreSQL cũng đơn giản phải không nào. Về cơ bản cũng giống như kết nối từ PHP đến Mysql thôi hà. Muốn biết về cách quản trị PostrgreSQL thì xem link này: Quản trị PostgreSQL với pgAdmin4 . Nếu cần xem thêm tài liệu thì bạn có thể xem ở link này https://www.php.net/manual/en/function.pg-connect.php, https://www.php.net/manual/en/ref.pgsql.php, https://www.php.net/manual/en/ref.pdo-pgsql.php