Chức năng nào được cung cấp bởi php để kết nối PostgreSQL SQL?

Tiện ích mở rộng PostgreSQL của PHP cung cấp API toàn diện cho các nhà phát triển để tương tác với RDBMS PostgreSQL. Ngoài các thao tác SQL cơ bản, API còn hỗ trợ các câu lệnh, giao dịch đã chuẩn bị, truy xuất siêu dữ liệu bảng và kiểm tra biến máy chủ

Không có gì bí mật khi PHP và MySQL kết hợp tốt với nhau. Cả PHP và MySQL đều là các dự án nguồn mở, được sử dụng rộng rãi trong cộng đồng nhà phát triển và kết hợp tốt với nhau nhờ hỗ trợ MySQL tích hợp sẵn của PHP. Trong khi MySQL đang nhận được nhiều sự chú ý, thì PostgreSQL cũng xứng đáng nhận được một cái gật đầu. PostgreSQL là một RDBMS mã nguồn mở, giàu tính năng với lượng người theo dõi trung thành trong cộng đồng nhà phát triển, là giải pháp thay thế khả thi cho các sản phẩm thương mại

Hướng dẫn này sẽ giới thiệu cho bạn API PostgreSQL của PHP và chỉ cho bạn cách PHP có thể kết nối với cơ sở dữ liệu PostgreSQL, lưu và truy xuất bản ghi, kiểm tra các biến máy chủ PostgreSQL và truy xuất thông tin bảng

giả định

Trước khi bắt đầu hướng dẫn, tôi muốn bạn thông báo cho bạn về ba giả định mà tôi đang đặt ra về bạn và môi trường phát triển của bạn

  • Bạn biết cơ bản về SQL và PHP
  • Bạn đã cài đặt RDBMS PostgreSQL và nó đang hoạt động trong môi trường phát triển của bạn. Nếu không phải như vậy, bạn sẽ cần tải xuống và cài đặt phiên bản PostgreSQL tương thích với hệ điều hành của bạn
  • Bạn có một máy chủ Web Apache đang hoạt động với sự hỗ trợ cho PHP 5. 1 và bản dựng PHP của bạn có hỗ trợ cho tiện ích mở rộng PostgreSQL. Nếu đây không phải là trường hợp, bạn có thể cần phải biên dịch lại PHP với tùy chọn ‘–with-pgsql’ (UNIX) hoặc kích hoạt tệp mở rộng thích hợp (Windows). Hướng dẫn sử dụng PHP giải thích cách thực hiện các tác vụ này

điều kiện tiên quyết

Hãy thiết lập bảng cơ sở mà tôi sẽ sử dụng trong các ví dụ sau. Bắt đầu bằng cách tạo một cơ sở dữ liệu mới có tên test

postgres@thor:~$ /usr/local/pgsql/bin/createdb test

Tiếp theo, khởi động shell psql tương tác và tạo bảng sau

postgres@thor:~$ /usr/local/pgsql/bin/psql test
Welcome to psql 8.2.3, the PostgreSQL interactive terminal.

Type:  copyright for distribution terms

       h for help with SQL commands

       ? for help with psql commands

       g or terminate with semicolon to execute query

       q to quit

postgres=# CREATE TABLE Countries ( postgres(#  CountryID char(2) NOT NULL, postgres(#  CountryName varchar(255) NOT NULL, postgres(#  PRIMARY KEY  (CountryID) postgres(# ); CREATE TABLE postgres=#

Sau đó, thêm một số bản ghi vào bảng để bắt đầu mọi thứ

postgres=# INSERT INTO Countries VALUES ('AL', 'Albania');

INSERT 0 1

postgres=# INSERT INTO Countries VALUES ('DZ', 'Algeria');

INSERT 0 1

postgres=# INSERT INTO Countries VALUES ('AS', 'American Samoa');

INSERT 0 1

postgres=# INSERT INTO Countries VALUES ('AD', 'Andorra');

INSERT 0 1

postgres=# INSERT INTO Countries VALUES ('AO', 'Angola');

INSERT 0 1

postgres=# INSERT INTO Countries VALUES ('AI', 'Anguilla');

INSERT 0 1

postgres=# INSERT INTO Countries VALUES ('AQ', 'Antarctica');

INSERT 0 1

postgres=# INSERT INTO Countries VALUES ('AG', 'Antigua And Barbuda');

INSERT 0 1

postgres=# INSERT INTO Countries VALUES ('AR', 'Argentina');

INSERT 0 1

Khi bạn hoàn tất, hãy kiểm tra để đảm bảo rằng các bản ghi đã được chèn thành công

postgres=# SELECT * FROM Countries;
 countryid |     countryname

-----------+---------------------

 AL        | Albania

 DZ        | Algeria

 AS        | American Samoa

 AD        | Andorra

 AO        | Angola

 AI        | Anguilla

 AQ        | Antarctica

 AG        | Antigua And Barbuda

 AR        | Argentina

(9 rows)

Lấy dữ liệu

Bây giờ cơ sở dữ liệu đã được tạo và điền, tôi sẽ kiểm tra cách bạn có thể sử dụng PHP để kết nối với cơ sở dữ liệu và truy xuất các bản ghi từ nó. Đây là một tập lệnh PHP minh họa quá trình


 

 

// attempt a connection

$dbh = pg_connect("host=localhost dbname=test user=postgres");

if (!$dbh) {

    die("Error in connection: " . pg_last_error());

}

// execute query

$sql = "SELECT * FROM Countries";

$result = pg_query($dbh, $sql);

if (!$result) {

    die("Error in SQL query: " . pg_last_error());

}

// iterate over result set

// print each row

while ($row = pg_fetch_array($result)) {

    echo "Country code: " . $row[0] . "
";

    echo "Country name: " . $row[1] . "

";

}

// free memory

pg_free_result($result);

// close connection

pg_close($dbh);

?>

 

Thực hiện theo bốn bước tiêu chuẩn sau để thực hiện truy vấn SQL trên cơ sở dữ liệu PostgreSQL bằng PHP

  1. Tạo kết nối đến máy chủ RDBMS bằng cách gọi hàm pg_connect() và truyền cho nó một chuỗi chứa thông tin về tên máy chủ, tên người dùng cơ sở dữ liệu và mật khẩu (“host=localhost dbname=test user=postgres”). Nếu có thể kết nối với máy chủ, một đối tượng tài nguyên kết nối mới sẽ được trả về;
  2. Tạo chuỗi truy vấn SQL và thực thi nó bằng phương thức pg_query(). Đối với các truy vấn thành công, một đối tượng kết quả được trả về; . Nếu truy vấn không thành công, bạn có thể truy xuất lý do thất bại thông qua lệnh gọi pg_last_error()
  3. Đối với các truy vấn CHỌN, bạn có thể xử lý thêm đối tượng kết quả để trích xuất dữ liệu từ nó. Cách dễ nhất để xử lý đối tượng kết quả là sử dụng vòng lặp while(), vòng lặp này gọi pg_fetch_array() để tìm nạp bản ghi tiếp theo trong tập kết quả dưới dạng một mảng được lập chỉ mục bằng số; . Nếu bạn muốn mỗi bản ghi được trả về dưới dạng một mảng được lập chỉ mục chuỗi, hãy chuyển pg_fetch_array() cờ PGSSQL_ASSOC làm đối số bổ sung
  4. Kết thúc phiên cơ sở dữ liệu bằng cách hủy đối tượng kết quả bằng pg_free_result() và đóng kết nối cơ sở dữ liệu bằng pg_close()

Thêm và sửa đổi dữ liệu

Phương thức pg_query() cũng hoạt động tốt với các truy vấn INSERT, UPDATE và DELETE giống như với các truy vấn SELECT. Để minh họa điểm này, hãy xem xét danh sách sau, danh sách này nhắc người dùng nhập tên và mã quốc gia, sau đó tạo truy vấn INSERT để lưu dữ liệu đã gửi vào cơ sở dữ liệu bằng pg_query()


 

 

if ($_POST['submit']) {

    // attempt a connection

    $dbh = pg_connect("host=localhost dbname=test user=postgres");

    if (!$dbh) {

        die("Error in connection: " . pg_last_error());

    }

   

    // escape strings in input data

    $code = pg_escape_string($_POST['ccode']);

    $name = pg_escape_string($_POST['cname']);

   

    // execute query

    $sql = "INSERT INTO Countries (CountryID, CountryName) VALUES('$code', '$name')";

    $result = pg_query($dbh, $sql);

    if (!$result) {

        die("Error in SQL query: " . pg_last_error());

    }

   

    echo "Data successfully inserted!";

   

    // free memory

    pg_free_result($result);

   

    // close connection

    pg_close($dbh);

}

?>

  

     Country code:
  

    

     Country name:
       

    

    

  

 

  

 

Tập lệnh trình bày một biểu mẫu HTML với hai trường. mã quốc gia và tên. Sau khi biểu mẫu này được gửi, hàm pg_connect() được sử dụng để mở kết nối mới tới cơ sở dữ liệu, dữ liệu do người dùng gửi được kết hợp vào truy vấn INSERT và hàm pg_query() được sử dụng để thực hiện truy vấn và lưu dữ liệu . Các bước liên quan đến việc thực hiện tác vụ này giống với các bước trong danh sách trước, ngoại trừ rõ ràng là xử lý đối tượng kết quả bằng pg_fetch_array()

Lưu ý tập lệnh sử dụng hàm pg_escape_string(), được sử dụng để thoát các ký tự đặc biệt (chẳng hạn như dấu ngoặc kép) trong dữ liệu do người dùng gửi trước khi lưu vào cơ sở dữ liệu;

Sử dụng các truy vấn đã chuẩn bị

Truy vấn đã chuẩn bị là một mẫu truy vấn mà bạn sử dụng để giảm chi phí cơ sở dữ liệu khi bạn có một số lượng lớn các lệnh INSERT tương tự cần thực thi. Mẫu truy vấn được khởi tạo với các trường giữ chỗ, được thay thế bằng các giá trị thực khi cần

Phần mở rộng PostgreSQL của PHP bao gồm các hàm được xác định trước để xử lý các truy vấn đã chuẩn bị. Đây là một ví dụ về cách bạn có thể sử dụng chúng


 

 

// data set

$data = array(

   'FR' => 'France',

   'ES' => 'Spain',

   'IT' => 'Italy',

   'UK' => 'United Kingdom',

   'US' => 'United States'  

);

// attempt a connection

$dbh = pg_connect("host=localhost dbname=test user=postgres");

if (!$dbh) {

    die("Error in connection: " . pg_last_error());

}

// prepare query

$stmt = pg_prepare($dbh, "ps", "INSERT INTO Countries (CountryID, CountryName) VALUES($1, $2)");

// execute query

foreach ($data as $key => $value) {

    $result = pg_execute($dbh, "ps", array($key, $value));

    if (!$result) {

        die("Error in SQL query (country '$key'): " . pg_last_error());

    }

}

// free memory

pg_free_result($result);

// close connection

pg_close($dbh);

?>

 

Thực hiện theo các bước được xác định trước này để sử dụng truy vấn đã chuẩn bị sẵn với PostgreSQL

  1. Cố gắng kết nối với cơ sở dữ liệu bằng cách chuyển hàm pg_connect() một chuỗi chứa tên máy chủ, tên người dùng và mật khẩu. Hàm này trả về một đối tượng tài nguyên kết nối đại diện cho kết nối máy chủ PostgreSQL
  2. Tạo truy vấn đã chuẩn bị bằng hàm pg_prepare(). Hàm này chấp nhận ba đối số. đối tượng kết nối cơ sở dữ liệu, nhãn chuỗi chứa tên cho câu lệnh đã chuẩn bị và mẫu truy vấn SQL. Các biến $*, được sử dụng trong mẫu truy vấn SQL được chuyển đến lệnh gọi hàm pg_prepare(), là các trình giữ chỗ cho dữ liệu thực tế
  3. Chèn các giá trị dữ liệu thực tế vào mẫu truy vấn bằng cách gọi pg_execute() với đối tượng kết nối cơ sở dữ liệu, tên của câu lệnh đã chuẩn bị để sử dụng và một mảng chứa các giá trị sẽ được chèn. Trình tự các phần tử trong mảng rất quan trọng (phần tử mảng đầu tiên phải tương ứng với phần giữ chỗ $1, v.v.) và phải có một phần tử mảng cho mỗi phần giữ chỗ trong mẫu truy vấn. Mỗi khi bạn gọi pg_execute() với một đối số mảng khác, một truy vấn mới được thực thi với các giá trị tương ứng
  4. Kết thúc phiên cơ sở dữ liệu bằng cách gọi pg_free_result() và pg_close()

Truy xuất siêu dữ liệu bảng và biến máy chủ

Tiện ích mở rộng PostgreSQL của PHP cũng hỗ trợ truy xuất các mô tả bảng thông qua hàm pg_meta_data() của nó, trả về một mảng chứa thông tin về từng tên trường, loại, độ dài, giá trị mặc định và hỗ trợ giá trị NULL. Xem xét danh sách sau đây, minh họa nó trong hành động


 

 

  

   

    

    

    

    

   

   

// attempt a connection

$dbh = pg_connect("host=localhost dbname=test user=postgres");

if (!$dbh) {

    die("Error in connection: " . pg_last_error());

}

// get table metadata

$meta = pg_meta_data($dbh, "countries");

foreach ($meta as $key => $value) {

    echo "

";

    echo "

";

    echo "

";   

    echo "

";   

    echo "

";   

    echo "

";

}

// close connection

pg_close($dbh);

?>

  

Field name Field type Field length Field NOT NULL?
$key " . $value['type'] . " " . $value['len'] . " " . (($value['not null'] == 1) ? 'true' : 'false') .  "

 

Ngoài ra còn có một hàm pg_parameter_status() mà bạn có thể sử dụng để truy xuất các giá trị hiện tại của các biến máy chủ, chẳng hạn như ‘max_connections’ hoặc ‘work_mem’. Đây là một ví dụ về cách bạn có thể sử dụng pg_parameter_status()

________số 8_______

Phần kết luận

Như những ví dụ này minh họa, phần mở rộng PostgreSQL của PHP cung cấp một API toàn diện cho các nhà phát triển để tương tác với RDBMS PostgreSQL. Ngoài các thao tác SQL cơ bản, chẳng hạn như truy xuất dữ liệu và sửa đổi nội dung cơ sở dữ liệu, API cũng hỗ trợ các câu lệnh, giao dịch đã chuẩn bị, truy xuất siêu dữ liệu bảng và kiểm tra biến máy chủ. Hãy tự mình dùng thử hoặc đọc thêm về API PostgreSQL của PHP tại PHP. net

Chức năng nào được cung cấp bởi php để kết nối PostgreSQL SQL?

Bản tin nội bộ công nghệ hàng ngày

Luôn cập nhật những thông tin mới nhất về công nghệ với Daily Tech Insider. Chúng tôi mang đến cho bạn tin tức về các công ty, sản phẩm và con người hàng đầu trong ngành, cũng như các bài báo nổi bật, nội dung tải xuống và các tài nguyên hàng đầu. Bạn sẽ nhận được tài liệu hướng dẫn về các chủ đề công nghệ nóng hổi sẽ giúp bạn dẫn đầu cuộc chơi

Chức năng nào được cung cấp bởi PHP để kết nối với SQL?

Hàm connect() / mysqli_connect() mở một kết nối mới đến máy chủ MySQL.

Làm cách nào để kết nối với PostgreSQL từ PHP?

Kết nối với PostgreSQL bằng Trình điều khiển PHP và ODBC .
Bước 1. Kết nối với nguồn dữ liệu ODBC. Hàm odbc_connect() được sử dụng để kết nối với nguồn dữ liệu ODBC. .
Bước 2. Thực thi một câu lệnh SQL. .
Bước 3. In tập kết quả

Chức năng nào được sử dụng để giao tiếp với PostgreSQL?

libpq là giao diện của lập trình viên ứng dụng C với PostgreSQL. libpq là một tập hợp các chức năng thư viện cho phép các chương trình máy khách chuyển các truy vấn đến máy chủ phụ trợ PostgreSQL và nhận kết quả của các truy vấn này.

Làm cách nào để gọi một hàm PostgreSQL trong PHP?

Chỉ cần gọi hàm. $sql = 'CHỌN adduser($1,$2,$3,$4)';